Skip to content

Latest commit

 

History

History
64 lines (55 loc) · 2.15 KB

File metadata and controls

64 lines (55 loc) · 2.15 KB

Example

import os.path
# Access the font-specific logic of FontLab 7 with
# the `fontlab` package
from fontlab import *
# Access the entire Qt application framework that powers
# FontLab 7 with the `PythonQt` package
# `PythonQt.QtGui` exposes the full Qt GUI toolkit to build
# simple and most complex UIs
from PythonQt import QtGui

# Checks if a `.vfc` file with the same file name as this
# script file exists in the same folder
loc = [os.path.dirname(__file__)] +     list(os.path.splitext(os.path.basename(__file__)))
fontPath = os.path.join(loc[0], loc[1] + '.vfc')
# If there is no such file, opens a file open dialog with
# `QtGui.QFileDialog`, so you can pick a font file or Cancel
if not os.path.exists(fontPath):
    fontPath = QtGui.QFileDialog.getOpenFileName(
        None, 'Choose font', loc[0], '')

# If there is a font file, export its instances as OTF
if fontPath:
    # `fontlab.flWorkspace` instance is the FontLab 7 app
    # seen as the font editor
    ws = flWorkspace.instance()
    # `.mainWindow` is the graphical interface of FontLab 7
    main = ws.mainWindow

    # `.loadFont` opens a file in the FontLab GUI
    main.loadFont(fontPath)

    # `.currentPackage` is the active `fontlab.flPackage`,
    # which is a font inside FontLab
    fp = ws.currentPackage

    # `fontlab.flPreferences` has the FL7 preferences
    # that hold numeric constants that represent values
    # in the Export Font As dialog settings
    pref = flPreferences()

    # New `fontlab.ExportControl` class corresponds to
    # the settings of File > Export Font As...
    ec = ExportControl()
    ec.profileName = "OpenType PS"
    ec.destinationMode = pref.DestinationFolder
    ec.conflictMode = pref.ConflictOverwrite
    ec.contentMode = pref.ContentInstances
    ec.destinationFolder = os.path.dirname(fontPath)
    ec.groupProfiles = False
    ec.groupFamily = True

    # `flWorkspace.exportFont` exports the `flPackage`
    # with `ExportControl` settings
    ws.exportFont(fp, ec)

# `QtGui.QApplication` instance is the FontLab 7 app
# seen as a graphical app that uses the Qt framework
qapp = QtGui.QApplication.instance()
# Quit the FontLab 7 app
qapp.quit()