# Font Info

The Font Info dialog is available from all views. It allows you to name your font and various other useful bits of information. In a CID keyed font, there is a separate command to access the information for the font as a whole, the dialog looks the same. The dialog is composed of many different sub dialogs.

- Names
- General
- PostScript Private Dictionary
- OS/2
  - OS/2 Misc
  - OS/2 Metrics
  - OS/2 Sub/Superscripts
  - OS/2 Panose
- TTF Names
- TeX
- Size
- Comment
- Mark Classes
- Anchor Classes
- Contextual
- Mac Style
- Mac Features
- Mac State Machines

## Names

Postscript fonts have several different names, but basically there are two important ones: the family name (like Times) and the fontname (which is the family name with a bunch of modifiers like Bold Italic Condensed tacked on to the end. The FullName is designed to be read by humans, while the others are for machines, this name can contain spaces (like "New Century Schoolbook-Bold Condensed"). Finally there is the weight name. All of these names should be in ASCII. If you wish to enter names with characters outside this range look at the TTF Names Section.

The copyright field can contain whatever you want to put there, but it's a good place to put a copyright.

In most fonts the version field is a string (and so has minimal constraints on it), but in CID keyed fonts it must be a floating point number.

Many of these names are similar to the english names of the TTF Names section. If nothing is specified in that section then the names specified here will be used by default in ttf files.

## General

This sub dialog contains a rather random collection of settings.

The Ascent and Descent are (in this current definition) Macintosh concepts rather than Postscript, their sum, however, provides the size of the em-square and that is very much a postscript concept. For postscript fonts this number is set by strong convention to be 1000, while in most TrueType fonts it will be 2048 (also a convention, but TrueType claims rasterization is faster if the sum is a power of 2). Since both TrueType and Type1 (postscript) fonts represent numbers as 16-bit integers ascent and descent must be less than 32767. TrueType is more restrictive and requires their sum to be less than 16384.

If you change the size of the Em you may choose to have all the outlines (and kerning info) scaled to have the same proportion to the new value that they had to the old.

The Italic Angle indicates the slant of the font. FontForge can attempt to guess a good value for you by looking at the stems of certain letters ("I" for instance).

The underline position and height provide a program using this font a hint as to where it should place a line if it wants to underline text printed in this font.

NOTE: Adobe now says that both XUID and UniqueID are unnecessary.

The XUID field is a collection of numbers separated by spaces and enclosed in brackets. This allows you to specify the extended unique ID of the font. If you have set the XUID preference entry then FontForge will assign values to all new fonts (by appending a number unique to this font to the end of your preference item). Adobe recommends that the XUID be changed every time the font is changed, so each time you generate a postscript font, that font's XUID (if present) will be incremented by 1 (This incrementing does not happen in CID-keyed fonts, where the XUID behavior is too complex for this simple trick). (The XUID field is only meaningful in PostScript fonts).

The UniqueID field is an older convention for the same purpose as XUID. If you do not fill in this field then FontForge will pick a random number for you in the allowable range. If you want your font to have no unique id then give this the value of -1. If you have talked to Adobe and been assigned a real UniqueID then you may use this field, otherwise leave it blank. (The UniqueID field is only meaningful in PostScript fonts)

If you want your font to have vertical metrics (generally this means you are working on a CJK font) then check the `[*] Has Vertical Metrics` checkbox. This will enable the Vertical Origin field, and will mean that when you generate a truetype or opentype font a vertical metrics table will be added. The Vertical Origin is the vertical offset from the origin of the design coordinate system to the origin for the purposes of vertical metrics.

If you check `[*] Quadratic Splines` then FontForge will use quadratic Bézier splines for this font rather than cubic Béziers, this means that FontForge will be using the native spline format of truetype rather than postscript (or opentype). When FontForge generates a font it will convert from whatever format is used internally to whatever format is required for the font, so there will be no problem if this is set incorrectly, but setting it correctly for your font means you get a clearer idea of what the outlines will look like. I find quadratic splines harder to edit with because each spline is less flexible (and a number of FontForge's commands will not work on them), but the advantage of actually seeing what your truetype font will look like may outweigh that.

If you have configured FontForge for multi-layered editing there will also be a radio button here to turn that on.

You can also indicate that you are making a stroked font where every spline is stroked with a circular pen of the given width.

Sadly the encoding is not always sufficient for understanding the font's behavior. For example a unicode font designed for a chinese system will look very different from a unicode font for a japanese system (The same unicode character may map to very different chinese or japanese glyphs). To handle this (and some other cases) FontForge has the concept of "Interpretation". There are several cases in which this field is useful.

- To allow FontForge to know whether a Unicode (or any other non-CJK encoding which includes CJK glyphs) font should be viewed as Japanese, Chinese or Korean.
- Can cause FontForge to use the names "Delta.greek", "Omega.greek" and "mu.greek" for U+0396, U+03a9, U+03bc (instead of uni0396, etc.).
- Can cause FontForge to name glyphs in the public use area after Adobe's assignments to that area (ie. small caps, etc.)
- Can cause FontForge to name glyphs n the public use area after the American Mathematical Society's specification.

## Private -- (font-wide postscript hinting)

This sub-dialog shows most entries in the font's Private dictionary. The interesting things in this dictionary are mostly concerned with hints appropriate for the entire font. I shall not go into detail about the meanings of the various entries, that is best understood by reading Adobe's Type1 specification.

Don't try to change these until you understand what they mean.

The dialog is shown at right. It consists of a list, an editable region and a series of buttons. The list gives the names (keys) of the dictionary entries, while the editable region displays the value of the currently selected entry. To change an entry, simply select its key and then modify the value below.

For example the `BlueValues` entry specifies certain key regions of the font in a vertical direction. For instance it might contain the baseline serif, the x-height serif, the cap-height serif. It is expressed as an array of numbers, grouped in pairs. The first number of a pair is the low end of the region and the second is the high end. So in the example at right, the value of `BlueValues` is `[-20 0 437 457 583 603 623 643`.

When the `[Guess]` button is enabled FontForge thinks it can make a reasonable guess for the value of the currently selected entry. Often two entries in the dictionary will be closely linked and guessing at one will also guess at the value of the other (FontForge will warn you of this). In this case if FontForge were to guess the value of `BlueValues` it would also guess the value of `OtherBlues`.

The [Hist] button is similar, it will bring up a dialog showing a histogram of the values of an attribute of the font. The hope is that this will allow you to pick a good value for the entry.

You may also delete an entry from the dictionary with the `[Remove]` button. Some entries (such as `BlueValues`) are required to be present in any type1 font, but you may still delete them. FontForge will simply guess at a reasonable value when it needs to generate the font.

The `[Add]` button allows you to add new keys to the dictionary. Every key will be added with a blank value, and you will almost certainly need to provide an appropriate value for it. When you press `[Add]` a dialog pops up which allows you to enter the key's name. There is a pull down list of known keys (that aren't already in the dictionary), or you may add keys by typing them in.

Certain keys affect things other than hints. The `lenIV` entry controls how much random padding is placed around the type1 strings when the font is generated. Normally this will be 4, but if you want to save space (4 bytes per glyph in pfb format, 8 bytes in pfa) you may choose another value. The UniqueID key represents the font's Unique postscript ID. If you provide a value here then FontForge will copy it into the UniqueID field in the Font Dictionary. If you do not provide a UniqueID here, FontForge will generate a random one itself (this is different from True Type's UniqueID. They perform the same function but are formatted differently).

These entries are only meaningful for PostScript fonts.

## OS/2

This sub dialog contains settings important for Windows platforms, most of these settings live in the 'OS/2' table of a truetype or opentype font. The pane also includes a few pieces of data that do not live in the 'OS/2' table but are logically related.

The weight class provides a numeric value describing the boldness of the font. A normal face will usually have a boldness of 400, and a bold face will usually be 700. This must be a number between 100 and 900.

The width class allows you to provide a numeric value saying how condensed or expanded this font is.

The PFM Family is used when generating PFM files and classifies the font into some rather broad categories (Serif, Sans, Monospace, Script, Decorative).

You can control whether you want to allow your font to be embedded into other documents (most commonly pdf). You can restrict it so that it can never be embedded, it can be embedded into documents that can be printed (but not edited), it can be embedded into documents that can be edited, or it can be embedded into an editable document and later extracted and installed on a different system. You can also control whether the document producer is allowed to extract the glyphs it needs and make a new font from them (which saves space) or whether they must include the entire font if they use any of it. Finally you can restrict the embedding so that only bitmap versions of the font may be embedded. (meaningful in CID keyed postscript fonts as well as TTF and OTF).

The "Vendor ID" is a four character ASCII field used to identify the creator of the font.

The IBM Family is another classification scheme for fonts.

Finally you may order lookups in the GSUB (or morx) table.

These entries are only meaningful in TrueType and OpenType fonts (though the Embeddable entry (generally called FSType) will be set on CID keyed fonts even if they are not in an OpenType wrapper.

### `GSUB/morx` Ordering

This dialog allows you to control the order features in which are to be executed by the word processing program. If you have loaded an opentype or truetype font then the original order will be maintained. As you add more features they will appear at the bottom of the list (which may not be appropriate). You may select a feature name and use the buttons to move it up and down in the list. Things at the top of the list are executed first, things at the bottom last.

Caveat: Although the OpenType spec claims that the execution of features (actually lookups) will be ordered by their appearence in the lookup table, MicroSoft claims that they will apply features in the order that they think best. So the order specified in the font may be ignored.

## OS/2 Metrics

The Windows Ascent and Descent fields are badly defined in the OpenType spec, which says that they should express the maximum range of the Windows "ANSI" glyphs. If one uses this definition, non-"ANSI" glyphs are cropped. These should be the maximum range of all glyphs to avoid cropping. But even that will not always work. If you have a line with marks which are repositioned with GPOS, then the marks may be cropped, so Windows Ascent should include the maximum possible height of repositioned marks (or any other GPOS vertical repositioning feature).

This is too complex (and too ill defined) for FontForge to figure out, instead FontForge gives you a couple of options.

1. You may set WinAscent and WinDescent directly. Turn off the "[ ] Is Offset" checkboxes and any value you provide will be used as is.
2. Or you may specify an offset to be added to the maximum ascent and descent of the font (which FontForge will compute for you when it saves the font). If you don't have a mark to base feature, then I recommend that you set the offsets to 0, and check the "[*] Is Offset" checkboxes.

Both WinAscent and WinDescent should be positive numbers.

The Typographic Ascent and Typographic Descent are supposed to represent the line spacing of the font on the windows platform. Sadly very few applications actually use them (most applications use the Windows Ascent/Descent described above).

In traditional (Latin) typography, the unleaded line spacing should be 1em, and that is what Adobe recommends for these fields (they should sum to the Em-Size specified in the General pane). The Typographic Ascent should be the same as the font's Ascent, and the Typographic Descent should be the (negative) of the font's descent.

The "[*] Is Offset" checkboxes behave much as they do above, except they specify offsets from the font's ascent and descent rather than its bounding box.

The Typographic descent should be a negative number, the ascent a positive number.

You can also specify the default line gap, or leading between lines.

The mac uses a different set of fields for the same concepts, and stores them in the 'hhea' table rather than the 'OS/2'. The HHead Ascent and Descent are used to specify clipping (in some applications) and line spacing. They behave very much the way the Win Ascent & Descent behave (they are based on bounding box values). And the 'hhea' table has its own line gap field.

And if your font has vertical metrics enabled (See General above) you will be able to set the default spacing between vertical columns of text. (the equivalent to LineGap in vertical text).

## OS/2 Sub/Superscripts

The OS/2 table also contain information on scaling and positioning subscripts and superscripts.

Most fonts don't really need this control. If you leave the [*] Default check box on, then FontForge will generate some reasonable values on output (if nothing significant changes, it will use the values shown here). If you want control of these values, turn off the checkbox and the text fields will be enabled for you to change.

## Panose

This sub-dialog allows you to describe your font in 10 different dimensions. The exact meanings of many of these entries vary from script to script, and even the Latin ones are not clear to me, I have merely typed them in as specified in the true type docs. Better information is available from HP, AGFA and MS.

If you leave the [*] Default checkbox set then FontForge will generate reasonable values when the font is output, otherwise you may set these values manually.

These entries are only meaningful for TrueType, OpenType and SVG fonts.

## TTF Names

TrueType (and OpenType) fonts are allowed to have different names in different languages. So a French user might see CaslonItalic displayed as CaslonItalique in a font menu, while a German user might see CaslonKursive. There are about 20 different strings which may be customized into various different languages. Customizing one string does not mean that you must customize the others (indeed, usually only the Style string is customized).

The image at right shows the dialog, displaying all the strings set for the given font. You may order these strings based on type of string (ordered as below), on language (ordered by unicode), or by a variation of language which displays strings for the language of the current locale first, then English strings (because, in general, these will be the most important for the user) and then ordered by language thereafter.

Certain strings in English (Copyright, Family, Styles, Fullname, Version) will always be present. If you do not set them explicitly they will be taken (possibly with modifications) from the equivalent postscript strings on the Names pane. You may not remove these strings, and if you wish to modify them you must first detach them from the PostScript. In the example at right the strings bound to PostScript are shown in red (Copyright, Family, Styles), while Fullname and Version have been detached and modified.

You may change the language of a string by clicking the mouse on the language field of that string -- a popup menu will appear giving you a choice of all supported locale/languages. (You may not modify the language of the special English strings mentioned above).

You may change the string type in a similar manner, again you may not change the special English strings.

If you click with the right button on a string you will bring up a different popup menu which will allow you to:

- Detach a string from its PostScript equivalent if any (so you can modify it)
- Delete a string entirely (except for the special strings bound to PostScript)
- Edit a string in a larger window.

If you click with the left button on a string value you may edit that string in line, if it is small enough, otherwise in a larger window.

If you wish to add a new string, click on the <New> entry at the bottom. You will be given the standard language popup and it will create a new string for you.

The various strings and a brief description of their meanings are:

Copyright
  Allows you to specify the copyright message
Family
  The font's family name
Styles (SubFamily)
  This should (in English) have values like "BoldItalicCondensed". This is the most likely string to change in different languages.
Fullname
  The concatenation of the Family name and the Styles name
UniqueID
  This is a string that uniquely identifies the font in a human readable fashion. It's format is quite different from postscript's UniqueID and FontForge will create an appropriate string if you don't specify one (rather than copying from postscript).
Version
  A string containing the version number of the font.
Postscript Name
  (FontForge will not let you set this directly. It will be set automatically to the postscript fontname, only one instance of this tag is allowed in the font and it must be ASCII)
Trademark
  A string containing any trademark information for the font.
Manufacturer
  The name of the company that distributes the font.
Designer
  The name of the person who designed the font.
Descriptor
  A description of the font and its characteristics.
VendorURL
  An URL pointing to the font's vendor.
DesignerURL
  An URL (often an e-mail address) pointing to the font's designer
License
  A string describing the license terms under which the font is marketed
License
  An URL pointing to a page describing the terms of the license
Preferred Family
  This is to get around a quirk of windows where only four Style names are allowed per family, so font families with more than four styles would get different family names above, but the preferred family name would be the same. This should only be specified if it differs from the family
Preferred Style
  This is similar to the above, except it applies to the style.
Compatible Full
  This is to get around a quirk on the Mac.
Sample Text
  Whatever.

These are described in the original true type docs, but they apply to open type as well.

These settings specify strings for the windows platform with unicode encoding.

Generally fonts will have a fairly complete set of strings in the American English entry, with the Style string (and nothing else) translated into different languages.

English | Regular | Bold | Demi-Bold | Light | Medium | Book | Black | Italic | Oblique | Condensed | Expanded | Outline
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
French | Normal | Gras | Demi-Gras | Maigre | Normal |  | Extra-Gras | Italique | Oblique | Étroite | Large | Contour
Spanish | Normal | Negrita |  | Fina |  |  | Supernegra | Cursiva |  | Condensada | Ampliada |
Italian | Normale | Nero | Neretto | Chiaro | Medio | Libro | ExtraNero | Corsivo | Obliquo | Condensato | Allargato |
German | Standard | Fett | Halbfett | mager | mittel normal | Buchschrift | Schwarz | Kursiv | schräg | schmal | breit | Kontur
Dutch | Regelmatig | Vet |  | Licht |  |  | Extra vet | Cursief |  | Smal | Breed |
Swedish | Mager | Fet |  | Extrafin |  |  | Extrafet | Kursiv |  | Smal | Bred |
Norwegian | Vanlig | Halvfet |  | Mager |  |  | Fet | Kursiv |  | Smal | Sperret |
Danish | Normal | Fed | Halvfed | Fin | Medium |  | Extra fed | Kursiv |  | Smal | Bred | Kontur
Hungarian | Normàl | Kövér | FélkövérKövér | Világos | Közepes | Sötétes | Fekete | Do"lt | Döntött | Keskeny | Széles | Kontúros
Russian (koi8r) |  | ÖÉÒÎÙÊ | ÐÏÌÕÖÉÒÎÙÊ | ó×ÅÔÌÙÊ |  |  |  | ëÕÒÓÉ×ÎÙÊ | îÁËÌÏÎÎÙÊ | óÖÁÔÙÊ | ûÉÒÏËÉÊ |

(Any help in expanding/correcting the above table would be greatly appreciated pfaedit@users.sourceforge.net)

When you create a Style entry for an language, FontForge will attempt to translate the American English style into something appropriate for that language. It understands the above table, but not other languages so it won't always work. So if your style in American English is "BoldItalic" then after you create the appropriate strngs FontForge will default to "GrasItalique" for French, "FettKursiv" for German, "ÖÉÒÎÙÊëÕÒÓÉ×ÎÙÊ" for Russian and "NigritaCursiva" for Spanish.

These names are only meaningful for TrueType and OpenType fonts.

## TeX

This allows you to set the TeX font parameters (which are described in Appendix F, pp 98-100 of the MetaFont Book). There seem to be 3 different types of font parameters, those for text fonts, those for math fonts and those for math extension fonts. The later two have additional parameters which are accessible through the [More Params] button. The default values for the Math parameters are probably reasonable. The default values for the Math Extension parameters are probably unreasonable.

These values are stored in tfm files (should you generate a tfm file with your font).

## Size

This allows you to set the design size of a font, the design range, and provide a style name for this class of font.

In tradtional typography every point size of a given font would be slightly different -- generally small point sizes would have proportionally more white-space around the glyph and wider stems inside the glyph. This made small point sizes more readable than they would otherwise be. Conversely large pointsizes would tend to have less white space around them, otherwise the letters would appear too far apart.

Multi-master fonts provide one method to avoid this problem. This dialog provides another. Suppose you have a series of font-faces designed for different point-sizes.

Ambrosia-Regular-Small | <9pt
Ambrosia-Regular-Text | 9-13pt
Ambrosia-Regular-Heading | 14-23pt
Ambrosia-Regular-Display | >=24pt

Then you would fill in this dialog to allow the font system to figure out which font was appropriate for which point size. The dialog displays the font's optimal size -- it's design size, and the point range within which it can be used.

In the example above all the different fonts would have the same "Style-ID" this is an arbetrary number that links all fonts with this ID together (all fonts in the same family, that is). However, Ambrosia-Italic-Text would have a different Style ID. All fonts with the same Style ID should have the same Style Name. Note that font names are now something like "Ambrosia-Regular-Heading" -- the user should not be subjected to that complication, as far as s/he is concerned there is just a font called "Ambrosia-Regular" and all four of the above fonts are just instances of it. So the Style Name of all four fonts above should be "Regular"

## Comment

This allows you to keep track of arbitrary comments inside your font database. It does not correspond to any postscript or truetype entity. It is intended to store a changelog for the font itself, but could be used for other purposes...

Various font formats allow a random comment to be place in the font, but no format makes use of it. This is primarily to be used inside FontForge. The comment should be in ISO Latin1.

## Mark Classes

The various marks in your font may be divided into classes. As far as I know the only real use for this is to handle indic rearrangement and allow ligatures to be formed which skip over certain glyphs. Each class of marks should be named and that name may be used in the Element->Glyph Info->Ligature->New dialog to specify which marks should be considered in forming this ligature and which should be ignored.

From here you may add new classes, or edit old ones.

The dialog for creating a new (or modifying an old) mark class allows you to give that class a name and requires that you to provide a list of glyphs that make up the class.

## Anchor Classes

This sub-dialog allows you to control the Anchor Classes used in your font. Anchor classes need a name and a tag. Generally you want to use the default tag of 'mark' (but see the discussion in the overview of when you might not).

From here you may add new classes, delete old ones or rename old ones. You may also bring up outline glyph views looking at the glyphs which use these classes.

The dialog for creating a new (or modifying an old) anchor class allows you to give that class a name and requires that you associate it with a set of scripts and languages. You may also set some standard OTF flags.

There are three different types of anchor classes (well there are four, but FontForge doesn't need to distinguish between two of them), Mark to Base, Mark to Mark and Cursive. When you create an anchor class you must select which type it will be.

- Mark to Base is used for connecting marks (diacritic marks such as accents) to base letters or ligatures
- Mark to Mark is used for connecting two marks together (when you have several marks that interact in their positioning when applied to the same letter)
- Cursive is used to join two letters so they will give the illusion of cursive script.

Generally in OpenType fonts several Anchor Classes will be treated as one unit if they refer to approximately the same set of base glyphs and have non-overlapping marks An example: there could be two types of marks that attach to the same set of letters, one attaching below and one above the letter, each would have its own anchor class, but you would tell FontForge to associate the two together by having them "Merge With" each other.

FontForge recognizes a special feature tag ' RQD' to indicate that this feature is required for the given script/language. Such a feature will always be applied.

Anchor classes are only meaningful when generating a truetype (ttf or otf) like font with OpenType tables.

## Contextual

This sub-dialog allows you to create and remove contextual substitutions and position features in your font.

For a description of what a contextual feature might be see here

This dialog allows you to create a new contextual feature by pressing the [New] button. This is a two part operation, first you will be prompted for the standard tag, script&language combination, and flags, then (in a separate dialog) you will be prompted for the contents of the feature.

The [Edit] button will allow you to change the tags, script and flags (it corresponds to the first part of [New]) and the [Edit Data] button allows you to change the contents of the feature.

Contextual/chaining tables are only meaningful when generating a truetype (ttf or otf) like font with OpenType tables (in a few cases they can be converted into Apple Advanced Typography tables too).

## Mac Style & FOND

This sub-dialog allows you to set the mac style of your font. Normally FontForge will be able to guess the style from the fontname (and various other clues), but sometimes the name will be non-standard (or perhaps just in a language FontForge doesn't know about), and other times you may wish to override this default setting.

If you are happy with the default, just leave the Automatic button checked, if you wish to override check the button next to the list box. You may select any combination of styles (remember to hold down the control key to get multiple selections) except for one containing both "Condense" and "Expand".

Note: If you want the style to be "Regular" then leave all styles unselected.

The mac style is stored in the header of an sfnt (truetype or opentype font file), but is most important in creating mac font families.

The FOND name is only used for generating mac families. It is a grouping level underneath the family level. See the FAQ for a discussion on when to use this.

## Mac Features

This sub-dialog allows you to create and remove Mac features from your font. This will override the Mac features specified in the preferences dialog for this particular font (for example to give a more appropriate but local name to a certain feature setting).

## Mac State Machines

This sub-dialog allows you to create and remove Apple's state machines from your font. These have some similarities to Contextual/Chaining substitutions (see the previous section).

For a description of what a state machine might look like see here.

These state machines are only meaningful when generating a truetype or opentype font with the Apple option set in the Options dialog.

See Also:

- The char info dialog
- The get info dialogs
- The contextual / chaining dialog

-- Prev -- TOC -- Next --