8

I'm making a font with scripting on Fontforge. Everything goes well, but I have this problem I don't know how to specify for a selected glyph that if two other glyphs came simultaneously show the selected glyph. I have already made the Lookuptable and the subtable for that but I don't know the function that would define some ligatures for a specified glyph. Here is the code for making table and subtable for adding ligatures to a glyph.

AddLookup("Ligatures","GSUB_ligature",9,[["rlig",[["arab",["dflt"]]]]])
AddLookupSubtable("Ligatures","Ligatureshi")
Suragch
  • 484,302
  • 314
  • 1,365
  • 1,393
Ehsan
  • 4,334
  • 7
  • 39
  • 59
  • The question asks for how to add ligatures to a font using a script, but it is also possible to do in the FontForge GUI interface. I don't know how to do this well enough to add a full answer, but go to **Element > Font Info > Lookups > GSUB**. See [this answer](http://stackoverflow.com/a/43315958/3681880) for how to remove ligatures. – Suragch Apr 10 '17 at 06:25

2 Answers2

6

You need to specify the Ligature substitution using a tuple of existing Glyph names.

A contrived example:

#!/usr/bin/env python3
import fontforge

# load your font, etc…

ligature_name = 'f_l'
ligature_tuple = ('f', 'l')
font.addLookup('ligatures','gsub_ligature', (),[['rlig',[['arab',['dflt']]]]])
font.addLookupSubtable('ligatures', 'ligatureshi')
glyph = font.createChar(-1, ligature_name)
glyph.addPosSub('ligatureshi', ligature_tuple)
Fredrick Brennan
  • 7,079
  • 2
  • 30
  • 61
13rac1
  • 1,057
  • 11
  • 14
0

After you've added the lookup & subtable, do this:

Select("fl")
AddPosSub("LigatureSubtableName", "f l")

The above FontForge script will add a fl ligature.

Arthaey
  • 246
  • 3
  • 5
  • Hi @Arthaey, This line of code that you wrote is gonna declare some substitutions in the substitution table which seems not to show "fl" when I'm writing "f" and "l", so I guess I need something that can add some information for "fl" in the ligature table for converting "f"&"l" to "fl" when they appear together. Do you have any idea? or at least have you done this before? – Ehsan Jun 10 '13 at 01:28