# Preferences Dialog

AutoHint
  Whether glyphs should be automagically hinted before a bitmap glyph is generated (improves the quality of the bitmap)
LocalEncoding
  The default encoding used by the operating system (ie. text that is pasted into fontforge will be assumed to be in this encoding). If you select "Default" here, fontforge will attempt to guess the correct encoding by looking at: LC_MESSAGES, LC_ALL, LANG environment variables.
NewCharset
  The default encoding used to create new fonts. Normally this is ISO 8859-1.
NewEmSize
  Specifies the default number of em-units in the em-square. For PostScript fonts this should be 1000, for truetype fonts it should be a power of two (often 512, 1024 or 2048 will be used).
NewFontsQuadratic
  Splines in fonts may be either in quadratic or cubic format. TrueType fonts use quadratic splines while PostScript (and OpenType) fonts use cubic splines. 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.
LoadedFontsAsNew
  When FontForge reads in a font it will generally keep the splines in the format they used in the font (that is quadratic for truetype fonts and cubic for postscript). If you set this flag then all loaded fonts will have the same file format as that specified by NewFontsQuadratic above.
GreekNames
  Will cause most new fonts to be created with a greek interpretation.
ResourceFile
  FontForge will read X Resources from a property on the screen. But sometimes this isn't enough. You set this preference item to specify a file from which these resources should be read (those on the screen will also be read and will supersede those in the file).
HelpDir
  FontForge will search this directory for help files when the user presses [F1].

AutoWidthSync
  Whether you want the widths of accented glyphs to track the width of the base glyph (so if you modify the width of A then the width of À will automagically change, if À is built as a reference to A and a reference to grave)
AutoLBearingSync
  Whether you want left side bearings of accented glyphs to track the left side bearing of base glyphs (so if you shift A left, then the accent in À will also be shifted left)
ItalicConstrained
  Whether constrained motion in the glyph view should allow motion parallel to the italic angle as well as horizontal and vertical.
ArrowMoveSize
  The number of em-units an arrow key will move a selected point in the glyph view.
SnapDistance
  The maximum distance at which pointer motion in the glyph view will be snapped to an interesting object (ie. a point, baseline, width line, etc.). This is measured in pixels.
JoinSnap
  The maximum distance between the endpoints of two splines before they will join with the Edit->Join command. This is measured in pixels in the char view and em-units elsewhere.
CopyMetaData
  Controls the behavior of Edit->Copy from the fontview. Normally Copy does not copy a glyph's metadata (name, encoding, etc.) but if this is set then it will.
UndoDepth
  Controls the maximum number of Undoes that may be retained in a glyph. (In some rare occasions an Undo will be stored even if this depth is 0)
StopAtJoin
  When dragging points in the outline view, if the end point of one open contour is moved onto the end point of another open contour then those two contours will join. If you leave this Off then further motion will continue to move the points, if you set this to On then FontForge will stop noticing mouse movements (it pretends that you released the mouse button). This is useful if you hand jitters a little on the mouse.
UpdateFlex
  Figure out what points will be part of flex hints after every change to a glyph. Points which are at the center of a flex hint will have a green halo drawn around them. The criteria for flex hints are given on pages 72-73 of Adobe's T1_Spec.pdf. This setting can be used to show you when those criteria are not met.

AccentOffsetPercent
  The amount of space (as a percentage of the em-square) that should be placed between an accent and the glyph below it by the Build Accented Character command.
AccentCenterLowest
  Whether accents should be positioned over letters based on the center of the accent, or on the center of the bottom of the accent.
CharCenterHighest
  Whether accents should be positioned over letters based on the center of of the letter, or on the center of the top of the letter.

Foundry Name
  Used in generating bdf files (part of the X Windows font naming convention).
TTF Foundry
  Similar to the above except that it is used inside ttf files (the achVendID field of the OS/2 table) and is limited to 4 glyphs.
XUID-Base
  The base "XUID". Should uniquely identify the user's organization. If present then every new font will be given an XUID generated by appending a random number to the end of this string (which should consist of a set of numbers separated by spaces). Whenever a postscript font is generated then this last number will be incremented by 1.

  I have registered with Adobe and they have assigned FontForge (actually PfaEdit) an extended unique id base of [1021]. When you first start FontForge, FontForge will itself append a couple of random numbers to this to give you your own extended unique id. And individual fonts will get a fourth number added to that.

  If you want you may register directly with Adobe for your own XUID base.

  See also Adobe's comments on UniqueIDs.

AskBDFResolution
  Normally FontForge will guess at what screen resolution you intend based on the pixel size of the font (ie. 17 pixel fonts are usually 100dpi (12pt) and 12 pixel fonts are usually 75dpi), but sometimes you will have more esoteric desires. Setting this will give you more control, but you have to click through another dlg.
PreferCJKEncoding
  This controls the loading of truetype and opentype fonts. If a font contains both an unicode encoding subtable and a cjk subtable, then this item allows you to pick which one FontForge will choose to decode.
HintForGen
  Whether glyphs should be automagically hinted before a font is generated.
AlwaysGenApple
  If you always want to generate Apple style TTF fonts (and never windows ones) then select this item.

AutotraceArgs
  This allows you to specify any arguments you want passed to the autotrace program. Don't try to pass something that will change the input or output format or set input or output files.
AutotraceAsk
  If this is set then each time autotrace is invoked it will ask you for arguments.
MfArgs
  This is the command passed to the mf (MetaFont) program which controls conversion of .mf files into bitmaps.
MfClearBg
  Loading a .mf font is a multi step process, first a bitmap font is generated, it is loaded into the background, then autotrace is invoked to trace around the backgrounds. These background bitmaps can take up a lot of space and you may not want them after they have been autotraced. Selecting this entry will remove those bitmaps from the font after they have been used.
MfShowErr
  The mf program generates a fair amount of verbiage even when it is working correctly. And if it is working correctly you don't want to see those words. So normally FontForge suppresses messages from mf. But if something goes wrong you do want to see mf's output and setting this will allow you to do so.

This section of the dialog allows you to define built in scripts that will show up in the script menu. Each entry has two things associated with it, the menu name and a script file. The menu name will be the name of this entry inside the script menu, and the script file will be the filename of the file to be invoked. The "..." button allows you to browse for script files, which I think have extension .pe (but which can have whatever extension you prefer if you don't like my conventions).

The Mac Features dialog allows you to define a set of default names (in many languages) for mac features and settings. These names are placed in the 'name' table whenever a feature/setting is used in a generated 'morx' table. (Thus if you have some common ligatures in your font, then the "ligature" feature names, and the "common ligature" setting names will be added to the 'name' table).

You may also use this dialog to establish which setting(s) should be on by default in a given feature and whether the feature only allows one setting to be on at a time (the settings are mutually exclusive). All of this data may be overridden by the similar dialog in the Element->Font Info dialog.

To edit an existing feature double click on that feature in the list (at right) this will bring up the dialog on the left. Each feature must be assigned a unique number. You should indicate whether it has mutually exclusive features or not. You should provide names for the feature in various languages, and you should provide settings for the feature.

To add a new name press the [New] button under the name list and you will be prompted for a language and a name.

To add a new setting press the [New] button under the setting list. The setting dialog contains the numeric value of this setting (Apple has decreed that if the feature is not mutually exclusive, all settings must be even numbers), whether this setting is on by default, and then a list of names for the setting in as many languages as you like.

The Mac Mapping dialog allows you to define a mapping between OTF `GSUB` feature tags and Apple's `mort/morx` Feature/Setting codes.

Apple's published list of features and settings appears out of date (in that some features used by current fonts are not found in it).

A four letter OTF feature tag may correspond to a mac feature/setting combination. If you wish to create a new mapping you must first insure that the mac feature setting you desire is present in the feature list (above), and then you may add the mappings.

You must specify a mac feature (which must already be defined), a mac setting code and a 4 glyph opentype tag.

## Other ways of configuring

A number of things that might be controlled from a preference window are controlled by

- X Resources
- Environment Variables

-- Prev -- TOC -- Next --