跳至主要内容
☀️ Summer Founder's Deal:FontCreator 永久许可证 $49(原价 $199)。限时优惠 — 7 月 14 日截止。 立即获取 →

FontCreator Tutorials

Arabic Font Design

written by Erwin Denissen, published June 26, 2026

Level: Advanced / Specialist. This tutorial assumes you're already comfortable drawing glyphs and working with anchors and OpenType features.

You'll need: FontCreator (Windows and macOS), familiarity with the Glyph Edit window and Insert Glyphs, and the OpenType Designer for shaping and proofing. Comfort with the worked example below (the teh-arab letter) will carry across to the rest of the alphabet.

FontCreator OpenType Designer preview showing an Arabic word with its letters joined, labelling the isolated, initial, medial and final contextual forms.

An Arabic word in the OpenType Designer preview area showing letters joined into a connected word, with isolated, initial, medial and final forms labelled.

This tutorial is aimed at FontCreator but a lot of it applies to font design in general. Like most font editors, this font editor is most often used for Latin-based fonts — but it also ships the advanced tools needed for Arabic font design and related scripts, covering Arabic, Farsi, Malay, Sindhi, Uighur, and Urdu. The OpenType Designer, FontCreator's native shaping engine, and interactive OpenType layout proofing together let you create, edit, and test complex-script fonts without leaving the program.

Note: Arabic is a connected, right-to-left script. That means two big jobs beyond drawing the letters: choosing the right contextual form of each letter depending on its neighbours, and positioning marks (dots, vowel signs) on each form. FontCreator handles both with contextual-form features and anchors.

Contextual forms: isolated, initial, medial, final

Because most Arabic characters connect to their neighbours, a letter's visual shape depends on its context in the word. In general a letter has four contextual forms:

  • isolated — used when the letter doesn't join anything (a non-joining context).
  • initial — used at the start of a joined group of letters.
  • medial — used in the middle of a joined group.
  • final — used at the end of a joined group.

So the same underlying letter can look quite different depending on where it lands. Since most letters come in all four forms, an Arabic font needs a lot of glyphs — but many of them reuse outlines from one another, and FontCreator helps you build those with composite glyphs and anchors rather than redrawing every shape.

A single Arabic letter shown in four contextual forms — isolated, initial, medial and final — each labelled in FontCreator.

One Arabic letter shown four times — isolated, initial, medial, final — side by side with each form labelled.

The contextual forms are wired up through OpenType layout features, conventionally named with the dotted-suffix naming FontCreator understands:

  • isol — isolated form
  • init — initial form
  • medi — medial form
  • fina — final form

Glyphs follow the matching naming convention: an isolated teh-arab and its forms teh-arab.init, teh-arab.medi, teh-arab.fina. FontCreator's automatic feature generation reads those suffixes and maps .init / .medi / .fina / .isol → the init / medi / fina / isol features — no manual wiring needed. Name the forms correctly and the generator connects each one to the right feature for you.

Build the base alphabet (worked example: teh-arab)

We'll create a new font, Arabic Starter. The new font comes with 200+ (mostly Latin) characters; you'd usually keep them, but to keep this example clean we remove all but the first two and add Arabic letters manually.

FontCreator uses smart glyph naming, so if you know the glyph names you can add them quickly through Insert Glyphs. We add teh-arab (the isolated form), and — because we want it to reuse other glyphs — its building blocks too. Make sure Ranges is not checked, since that conflicts with glyph names that contain hyphens.

`` dotlessbeh-arab twodotsabove-arab teh-arab = dotlessbeh-arab + twodotsabove-arab ``

This composes teh-arab from a dotless base body plus a two-dots mark, so editing either piece updates the letter.

  1. Add outlines to the glyphs. Click the Free Draw icon to quickly sketch an outline (there are more precise ways, but Free Draw is fastest for a first pass).
  2. When you're happy, click Convert to contours.
  3. Adjust the right side-bearing if needed by dragging the right-most vertical dotted line.
FontCreator Glyph Edit window showing the dotlessbeh-arab outline sketched with the Free Draw tool before conversion to contours.

The dotlessbeh-arab body drawn with Free Draw in the Glyph Edit window, before converting to contours.

Anchors and mark positioning

A mark in Arabic (a dot group, a vowel sign) must sit in the right place on each base letter and on each contextual form. FontCreator positions marks with anchors — named attachment points you put on bases and marks — rather than by hardcoding coordinates.

Set up the anchor class and the anchors for the worked example:

  1. While in the Glyph Edit window, open the Anchor Manager (from the Font menu) and add a new anchor class — for the dots above, name it top-arab. This class will carry top anchors used to place marks on base glyphs.
  2. Still in the base glyph (dotlessbeh-arab), right-click above the outline and choose Add Anchor… to add a Base anchor. Click and drag it to position it to your liking, then close the window.
  3. Open the mark glyph (twodotsabove-arab) in a Glyph Edit window and draw its outline with Free Draw.
  4. Because this glyph is used as a mark, right-click slightly below its outline and add a Mark anchor. Because other marks can stack on top of this mark, also add a Base anchor above it — so the mark glyph ends up with both a mark and a base anchor.
FontCreator Glyph Edit window showing the twodotsabove-arab mark with a mark anchor placed below it and a base anchor above it.

The twodotsabove-arab mark glyph with a mark anchor below the dots and a base anchor above them, both labelled.

Close the window — and because the anchors line up, the composite teh-arab is now positioned correctly too: the two dots land where the base anchor says they should. That's the payoff of anchor-based composition: one anchor pair drives placement everywhere the pieces are reused.

This anchor work feeds the same OpenType positioning features used across scripts — mark (Mark-to-Base) places a mark on its base, and mkmk (Mark-to-Mark) stacks one mark on another. For the full anchor workflow and how to generate these features, see Add Accents with Anchors & Complete Composites — the mechanics are shared between Latin diacritics and Arabic marks.

Add the other contextual forms

With the isolated letter done, add the remaining forms. As before, insert the dotless variants first (they carry the shapes), then compose the dotted forms from them:

`` dotlessbeh-arab.init dotlessbeh-arab.medi dotlessbeh-arab.fina teh-arab.init = dotlessbeh-arab.init + twodotsabove-arab teh-arab.medi = dotlessbeh-arab.medi + twodotsabove-arab teh-arab.fina = dotlessbeh-arab.fina + twodotsabove-arab ``

Draw outlines for the three dotless forms (.init, .medi, .fina) and don't forget to add base anchors to each — the dots are positioned the same way on every form, so every form needs the top-arab base anchor. Repeat the whole pattern (isolated + three forms, base anchors on each, dot marks composed on top) for the rest of your alphabet.

Required ligatures

Some Arabic combinations don't render as two separate letters at all — they must form a ligature. The lam-alef combination is the classic mandatory case. These are handled with OpenType ligature features:

  • rligrequired ligatures that must always apply (lam-alef is the canonical example).
  • liga — standard/optional ligatures.

Draw the ligature as its own glyph and name it from its members joined with underscores — FontCreator's automatic feature generation reads that name and builds the required ligature (rlig) for you. You can also build or inspect the substitution in the OpenType Designer, where the ligature lookup replaces the input glyph sequence with the single ligature glyph.

Note: Treat lam-alef and similar as required (rlig) so they apply even when a user has discretionary ligatures turned off.

Right-to-left writing

Arabic runs right to left, and a couple of settings make sure shaping and spacing behave:

  • In the OpenType Designer, lookups have a Right to Left lookupflag. Technically it's required only for Cursive Attachment lookups (it places the last glyph in the sequence on the baseline), but FontCreator also uses it to indicate a lookup is for right-to-left writing. For kerning pairs this means the first and second glyph are visually swapped — which is what you want while working on right-to-left scripts like Arabic and Hebrew, so set it on those lookups.
  • Make sure your font's script/language is set up for Arabic in the OpenType Designer so the shaping engine applies the right contextual logic.
FontCreator OpenType Designer lookupflags panel with the Right to Left flag checked for an Arabic lookup.

The OpenType Designer lookupflags panel with the Right to Left flag enabled on a lookup.

Generate the layout features

Rather than writing feature code by hand, use the OpenType Designer's feature generation:

  1. Open the OpenType Designer.
  2. Click Generate features (the first toolbar icon) to open the generation settings.
  3. Enable the contextual-form and positioning features you need — the joining forms (init/medi/fina/isol), anchor-based positioning (ccmp, mark, mkmk), and ligatures — then confirm. The generator reads your glyph names and builds the matching features automatically.

Re-generating replaces the previously generated lookups, so keep any hand-authored lookups separate from generated ones. You can also Import/Export the whole feature set (OTLFD or FEA, and Microsoft VOLT .vtp import) to reuse work between fonts.

Proof the shaping

The whole point of the contextual machinery is that it produces the right glyph in the right place — so test it interactively.

  1. In the OpenType Designer, type Arabic text (or a slash followed by a glyph name) into the Preview area. The internal Shaping Engine joins the letters and applies your features live.
  2. Click a glyph in the preview to jump to the lookup that produced it: if a glyph is the result of a substitution or positioning, the last applied lookup is shown — so you can see why a particular form or mark position appeared.
  3. Open the Proofing window to step through processing. Restart takes you to the beginning; Complete shows the final result; the step buttons walk through each lookup so you can watch your input string transform into the shaped output.
  4. To focus on a trouble spot, drag a rectangle around part of the preview — proofing filters to just the features relevant to that selection (Shift-drag to add more).
FontCreator OpenType Proofing window showing an Arabic word, the applied-lookup tree, and the lookup highlighted for a clicked glyph.

The OpenType Proofing window with an Arabic word, the lookup tree on the left, and one glyph clicked to reveal the lookup that shaped it.

Note: The preview relies on FontCreator's internal Shaping Engine, which supports many but not all scripts. If you hit a gap or want improvements for a particular script, let High-Logic know.

When the shapes and forms look right inside FontCreator, also test the exported font in real applications — see Debug OpenType Features with Font Inspection and the testing tutorials for checking the font outside the editor.

Troubleshooting

SymptomLikely causeFix
Letters don't join into wordsJoining features (init/medi/fina/isol) not generated, or forms misnamedUse the .init/.medi/.fina suffix convention and generate the joining features
Dots/marks land in the wrong spotBase/mark anchors missing or misplaced on a formAdd the top-arab base anchor to every form; check the mark glyph's mark anchor
Stacked marks overlapmkmk not generated, or the mark lacks a base anchorAdd a base anchor above the mark and generate mkmk
Kerning looks reversedRight-to-left not set on the lookupEnable the Right to Left lookupflag on the kerning lookup
lam-alef shows as two lettersRequired ligature missingBuild the ligature glyph and apply it via rlig
Right form appears in the wrong contextFeature/lookup order or script/language setupCheck script/language in OpenType Designer; proof the word to see which lookup fired

Frequently asked questions

Does FontCreator support Arabic font design? Yes. FontCreator ships the tools complex scripts need — the OpenType Designer, a native shaping engine, anchors, and interactive proofing — and covers Arabic, Farsi, Malay, Sindhi, Uighur, and Urdu. You design the contextual forms, position marks with anchors, and test the shaping inside the program.

What are the four contextual forms in Arabic? Isolated, initial, medial, and final. The isolated form is used when a letter doesn't join; the initial starts a joined group, the final ends it, and medial forms are used in between. They're wired up through the isol, init, medi, and fina features, with glyphs named using the matching .init / .medi / .fina suffixes.

How do I position the dots and vowel marks? With anchors. Add a Base anchor to each base form (e.g. a top-arab class anchor) and a Mark anchor to each mark glyph; FontCreator then places the mark via the mark feature, and mkmk stacks marks on marks. Building letters as composites means one anchor pair drives placement everywhere the pieces are reused.

How do I check that the shaping actually works? Type Arabic text into the OpenType Designer's preview to see the letters join live, then use the Proofing window to step through each lookup and click any glyph to see which lookup shaped it. This interactive proofing is the fastest way to find and fix shaping problems.

What to read next