aboutsummaryrefslogtreecommitdiffstats
path: root/Lib/defconQt/fontInfo.py
diff options
context:
space:
mode:
authorAdrien Tétar2015-06-12 15:23:40 +0200
committerAdrien Tétar2015-06-12 15:23:40 +0200
commit49ce44561ec8ade6ee0618076bfb955e6d2aaf50 (patch)
treee0b9a76f05a37af7bbd620f71b75493016ae6f92 /Lib/defconQt/fontInfo.py
parent7e3af461d8516c2c761e3134aa86c4ecc7a2d05f (diff)
downloadtrufont-49ce44561ec8ade6ee0618076bfb955e6d2aaf50.tar.bz2
fontInfo: Postscript, part of OpenType, (partial) layout rework
Diffstat (limited to 'Lib/defconQt/fontInfo.py')
-rw-r--r--Lib/defconQt/fontInfo.py724
1 files changed, 634 insertions, 90 deletions
diff --git a/Lib/defconQt/fontInfo.py b/Lib/defconQt/fontInfo.py
index 8adb94e..bc9b9f2 100644
--- a/Lib/defconQt/fontInfo.py
+++ b/Lib/defconQt/fontInfo.py
@@ -1,9 +1,8 @@
-from PyQt5.QtCore import QDate, QDateTime, QTime, Qt
-from PyQt5.QtGui import QDoubleValidator, QIntValidator
-from PyQt5.QtWidgets import QComboBox, QDateTimeEdit, QDialog, QDialogButtonBox, QFrame, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QScrollArea, QTabWidget, QVBoxLayout, QWidget
+from PyQt5.QtCore import *#QDate, QDateTime, QTime, Qt
+from PyQt5.QtGui import *#QDoubleValidator, QIntValidator
+from PyQt5.QtWidgets import *#QComboBox, QDateTimeEdit, QDialog, QDialogButtonBox, QFrame, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QScrollArea, QTabWidget, QVBoxLayout, QWidget
class TabDialog(QDialog):
-
def __init__(self, font, parent=None):
super(TabDialog, self).__init__(parent)
@@ -11,15 +10,16 @@ class TabDialog(QDialog):
self.tabs = {
"General": 0,
"Metrics": 1,
- "OpenType": 2
+ "OpenType": 2,
+ "PostScript": 3
}
self.font = font
self.tabWidget = QTabWidget()
self.tabWidget.addTab(GeneralTab(self.font), "General")
self.tabWidget.addTab(MetricsTab(self.font), "Metrics")
-# self.tabWidget.addTab(ApplicationsTab(fileInfo), "OpenType")
-# self.tabWidget.addTab(ApplicationsTab(fileInfo), "PostScript")
+ self.tabWidget.addTab(OpenTypeTab(self.font), "OpenType")
+ self.tabWidget.addTab(PostScriptTab(self.font), "PostScript")
# self.tabWidget.addTab(ApplicationsTab(fileInfo), "Miscellaneous")
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
@@ -37,6 +37,8 @@ class TabDialog(QDialog):
def accept(self):
self.tabWidget.widget(self.tabs["General"]).writeValues(self.font)
self.tabWidget.widget(self.tabs["Metrics"]).writeValues(self.font)
+ self.tabWidget.widget(self.tabs["OpenType"]).writeValues(self.font)
+ self.tabWidget.widget(self.tabs["PostScript"]).writeValues(self.font)
super(TabDialog, self).accept()
class GeneralTab(QWidget):
@@ -48,7 +50,7 @@ class GeneralTab(QWidget):
self.familyNameEdit = QLineEdit(font.info.familyName, self)
styleNameLabel = QLabel("Style name:", self)
self.styleNameEdit = QLineEdit(font.info.styleName, self)
-
+
mainLayout.addWidget(familyNameLabel, 0, 0)
mainLayout.addWidget(self.familyNameEdit, 0, 1, 1, 3)
mainLayout.addWidget(styleNameLabel, 0, 4)
@@ -68,22 +70,22 @@ class GeneralTab(QWidget):
manufacturerLabel = QLabel("Manufacturer:", self)
self.manufacturerEdit = QLineEdit(font.info.openTypeNameManufacturer, self)
-
+
mainLayout.addWidget(manufacturerLabel, 3, 0)
mainLayout.addWidget(self.manufacturerEdit, 3, 1, 1, 5)
manufacturerURLLabel = QLabel("Manufacturer URL:", self)
self.manufacturerURLEdit = QLineEdit(font.info.openTypeNameManufacturerURL, self)
-
+
mainLayout.addWidget(manufacturerURLLabel, 4, 0)
mainLayout.addWidget(self.manufacturerURLEdit, 4, 1, 1, 5)
-
+
copyrightLabel = QLabel("Copyright:", self)
self.copyrightEdit = QLineEdit(font.info.copyright, self)
-
+
mainLayout.addWidget(copyrightLabel, 5, 0)
mainLayout.addWidget(self.copyrightEdit, 5, 1, 1, 5)
-
+
# TODO: give visual feedback of input data validity using QLineEdit lose focus event
# http://snorf.net/blog/2014/08/09/using-qvalidator-in-pyqt4-to-validate-user-input/
versionLabel = QLabel("Version:", self)
@@ -94,8 +96,10 @@ class GeneralTab(QWidget):
versionDotLabel = QLabel(".", self)
versionMinor = str(font.info.versionMinor) if font.info.versionMinor is not None else ''
self.versionMinorEdit = QLineEdit(versionMinor, self)
- self.versionMinorEdit.setValidator(QIntValidator(self))
-
+ validator = QIntValidator(self)
+ validator.setBottom(0)
+ self.versionMinorEdit.setValidator(validator)
+
mainLayout.addWidget(versionLabel, 6, 0)
mainLayout.addWidget(self.versionMajorEdit, 6, 1)
mainLayout.addWidget(versionDotLabel, 6, 2)
@@ -114,51 +118,61 @@ class GeneralTab(QWidget):
time = parse[1].split(":")
time = QTime(*(int(val) for val in time))
dateTime.setTime(time)
- if not dateCreated:
+ else:
cur = QDateTime.currentDateTime()
dateTime.setDate(cur.date())
dateTime.setTime(cur.time())
self.dateCreatedEdit = QDateTimeEdit(dateTime, self)
-
+
mainLayout.addWidget(dateCreatedLabel, 6, 4)
mainLayout.addWidget(self.dateCreatedEdit, 6, 5)
-
+
licenseLabel = QLabel("License:", self)
self.licenseEdit = QLineEdit(font.info.openTypeNameLicense, self)
-
+
mainLayout.addWidget(licenseLabel, 7, 0)
mainLayout.addWidget(self.licenseEdit, 7, 1, 1, 5)
licenseURLLabel = QLabel("License URL:", self)
self.licenseURLEdit = QLineEdit(font.info.openTypeNameLicenseURL, self)
-
+
mainLayout.addWidget(licenseURLLabel, 8, 0)
mainLayout.addWidget(self.licenseURLEdit, 8, 1, 1, 5)
-
+
trademarkLabel = QLabel("Trademark:", self)
self.trademarkEdit = QLineEdit(font.info.trademark, self)
-
+
mainLayout.addWidget(trademarkLabel, 9, 0)
mainLayout.addWidget(self.trademarkEdit, 9, 1, 1, 5)
self.setLayout(mainLayout)
-
+
def writeValues(self, font):
- font.info.familyName = self.familyNameEdit.text()
- font.info.styleName = self.styleNameEdit.text()
- font.info.openTypeNameDesigner = self.designerEdit.text()
- font.info.openTypeNameDesignerURL = self.designerURLEdit.text()
- font.info.openTypeNameManufacturer = self.manufacturerEdit.text()
- font.info.openTypeNameManufacturerURL = self.manufacturerURLEdit.text()
- font.info.copyright = self.copyrightEdit.text()
+ familyName = self.familyNameEdit.text()
+ font.info.familyName = familyName if familyName != '' else None
+ styleName = self.styleNameEdit.text()
+ font.info.styleName = styleName if styleName != '' else None
+ designer = self.designerEdit.text()
+ font.info.openTypeNameDesigner = designer if designer != '' else None
+ designerURL = self.designerURLEdit.text()
+ font.info.openTypeNameDesignerURL = designerURL if designerURL != '' else None
+ manufacturer = self.manufacturerEdit.text()
+ font.info.openTypeNameManufacturer = manufacturer if manufacturer != '' else None
+ manufacturerURL = self.manufacturerURLEdit.text()
+ font.info.openTypeNameManufacturerURL = manufacturerURL if manufacturerURL != '' else None
+ copyright = self.copyrightEdit.text()
+ font.info.copyright = copyright if copyright != '' else None
versionMajor = self.versionMajorEdit.text()
font.info.versionMajor = int(versionMajor) if versionMajor else None
versionMinor = self.versionMinorEdit.text()
font.info.versionMinor = int(versionMinor) if versionMinor else None
font.info.openTypeHeadCreated = self.dateCreatedEdit.dateTime().toString("yyyy/MM/dd hh:mm:ss")
- font.info.openTypeNameLicense = self.licenseEdit.text()
- font.info.openTypeNameLicenseURL = self.licenseURLEdit.text()
- font.info.trademark = self.trademarkEdit.text()
+ license = self.licenseEdit.text()
+ font.info.openTypeNameLicense = license if license != '' else None
+ licenseURL = self.licenseURLEdit.text()
+ font.info.openTypeNameLicenseURL = licenseURL if licenseURL != '' else None
+ trademark = self.trademarkEdit.text()
+ font.info.trademark = trademark if trademark != '' else None
class MetricsTab(QWidget):
def __init__(self, font, parent=None):
@@ -167,97 +181,627 @@ class MetricsTab(QWidget):
styleMapFamilyLabel = QLabel("Style map family name:", self)
self.styleMapFamilyEdit = QLineEdit(font.info.styleMapFamilyName, self)
-# self.styleMapFamilyCBox = QCheckBox("Use default value", self)
styleMapStyleLabel = QLabel("Style map style name:", self)
self.styleMapStyleDrop = QComboBox(self)
-# items = ["None", "Regular", "Italic", "Bold", "Bold Italic"]
- styleMapStyle = {
- "None": 0,
- "Regular": 1,
- "Italic": 2,
- "Bold": 3,
- "Bold Italic": 4
- }
- for name,index in styleMapStyle.items():
- self.styleMapStyleDrop.insertItem(index, name)
+ items = ["None", "Regular", "Italic", "Bold", "Bold Italic"]
+ self.styleMapStyleDrop.insertItems(0, items)
sn = font.info.styleMapStyleName
- # TODO: index to set is statically known, should eventually get rid of dict overhead if any?
- if sn == "regular": self.styleMapStyleDrop.setCurrentIndex(styleMapStyle["Regular"])
- elif sn == "regular italic": self.styleMapStyleDrop.setCurrentIndex(styleMapStyle["Italic"])
- elif sn == "bold": self.styleMapStyleDrop.setCurrentIndex(styleMapStyle["Bold"])
- elif sn == "bold italic": self.styleMapStyleDrop.setCurrentIndex(styleMapStyle["Bold Italic"])
- else: self.styleMapStyleDrop.setCurrentIndex(styleMapStyle["None"])
-# self.styleMapStyleCBox = QCheckBox("Use default value")
+ if sn == "regular": self.styleMapStyleDrop.setCurrentIndex(1)
+ elif sn == "regular italic": self.styleMapStyleDrop.setCurrentIndex(2)
+ elif sn == "bold": self.styleMapStyleDrop.setCurrentIndex(3)
+ elif sn == "bold italic": self.styleMapStyleDrop.setCurrentIndex(4)
+ else: self.styleMapStyleDrop.setCurrentIndex(0)
mainLayout.addWidget(styleMapFamilyLabel, 0, 0)
mainLayout.addWidget(self.styleMapFamilyEdit, 0, 1, 1, 3)
mainLayout.addWidget(styleMapStyleLabel, 0, 4)
mainLayout.addWidget(self.styleMapStyleDrop, 0, 5)
+ unitsPerEmLabel = QLabel("Units per em:", self)
+ unitsPerEm = str(font.info.unitsPerEm) if font.info.unitsPerEm is not None else ''
+ self.unitsPerEmEdit = QLineEdit(unitsPerEm, self)
+ validator = QIntValidator(self)
+ validator.setBottom(0)
+ self.unitsPerEmEdit.setValidator(validator)
+
ascenderLabel = QLabel("Ascender:", self)
ascender = str(font.info.ascender) if font.info.ascender is not None else ''
self.ascenderEdit = QLineEdit(ascender, self)
self.ascenderEdit.setValidator(QIntValidator(self))
+ capHeightLabel = QLabel("Cap height:", self)
+ capHeight = str(font.info.capHeight) if font.info.capHeight is not None else ''
+ self.capHeightEdit = QLineEdit(capHeight, self)
+ self.capHeightEdit.setValidator(QIntValidator(self))
+
+ mainLayout.addWidget(unitsPerEmLabel, 1, 0)
+ mainLayout.addWidget(self.unitsPerEmEdit, 1, 1)
+ mainLayout.addWidget(ascenderLabel, 1, 2)
+ mainLayout.addWidget(self.ascenderEdit, 1, 3)
+ mainLayout.addWidget(capHeightLabel, 1, 4)
+ mainLayout.addWidget(self.capHeightEdit, 1, 5)
+
+ italicAngleLabel = QLabel("Italic angle:", self)
+ italicAngle = str(font.info.italicAngle) if font.info.italicAngle is not None else ''
+ self.italicAngleEdit = QLineEdit(italicAngle, self)
+ self.italicAngleEdit.setValidator(QDoubleValidator(self))
+
descenderLabel = QLabel("Descender:", self)
descender = str(font.info.descender) if font.info.descender is not None else ''
self.descenderEdit = QLineEdit(descender, self)
self.descenderEdit.setValidator(QIntValidator(self))
-
- unitsPerEmLabel = QLabel("Units per em:", self)
- unitsPerEm = str(font.info.unitsPerEm) if font.info.unitsPerEm is not None else ''
- self.unitsPerEmEdit = QLineEdit(unitsPerEm, self)
- self.unitsPerEmEdit.setValidator(QIntValidator(self))
-
- mainLayout.addWidget(ascenderLabel, 1, 0)
- mainLayout.addWidget(self.ascenderEdit, 1, 1)
- mainLayout.addWidget(descenderLabel, 1, 2)
- mainLayout.addWidget(self.descenderEdit, 1, 3)
- mainLayout.addWidget(unitsPerEmLabel, 1, 4)
- mainLayout.addWidget(self.unitsPerEmEdit, 1, 5)
xHeightLabel = QLabel("x-height:", self)
xHeight = str(font.info.xHeight) if font.info.xHeight is not None else ''
self.xHeightEdit = QLineEdit(xHeight, self)
self.xHeightEdit.setValidator(QIntValidator(self))
- capHeightLabel = QLabel("Cap height:", self)
- capHeight = str(font.info.capHeight) if font.info.capHeight is not None else ''
- self.capHeightEdit = QLineEdit(capHeight, self)
- self.capHeightEdit.setValidator(QIntValidator(self))
+ mainLayout.addWidget(italicAngleLabel, 2, 0)
+ mainLayout.addWidget(self.italicAngleEdit, 2, 1)
+ mainLayout.addWidget(descenderLabel, 2, 2)
+ mainLayout.addWidget(self.descenderEdit, 2, 3)
+ mainLayout.addWidget(xHeightLabel, 2, 4)
+ mainLayout.addWidget(self.xHeightEdit, 2, 5)
+
+ noteLabel = QLabel("Note:", self)
+ self.noteEdit = QPlainTextEdit(font.info.note, self)
+
+ mainLayout.addWidget(noteLabel, 3, 0)
+ mainLayout.addWidget(self.noteEdit, 3, 1, 1, 5)
- italicAngleLabel = QLabel("Italic angle:", self)
- italicAngle = str(font.info.italicAngle) if font.info.italicAngle is not None else ''
- self.italicAngleEdit = QLineEdit(italicAngle, self)
- self.italicAngleEdit.setValidator(QDoubleValidator(self))
-
- mainLayout.addWidget(xHeightLabel, 2, 0)
- mainLayout.addWidget(self.xHeightEdit, 2, 1)
- mainLayout.addWidget(capHeightLabel, 2, 2)
- mainLayout.addWidget(self.capHeightEdit, 2, 3)
- mainLayout.addWidget(italicAngleLabel, 2, 4)
- mainLayout.addWidget(self.italicAngleEdit, 2, 5)
-
self.setLayout(mainLayout)
-
+
def writeValues(self, font):
- font.info.styleMapFamilyName = self.styleMapFamilyEdit.text()
+ styleMapFamilyName = self.styleMapFamilyEdit.text()
+ font.info.styleMapFamilyName = styleMapFamilyName if styleMapFamilyName != '' else None
sn = self.styleMapStyleDrop.currentIndex()
if sn == 1: font.info.styleMapStyleName = "regular"
elif sn == 2: font.info.styleMapStyleName = "italic"
elif sn == 3: font.info.styleMapStyleName = "bold"
elif sn == 4: font.info.styleMapStyleName = "bold italic"
else: font.info.styleMapStyleName = None
+ unitsPerEm = self.unitsPerEmEdit.text()
+ font.info.unitsPerEm = float(unitsPerEm) if "." in unitsPerEm else int(unitsPerEm) if unitsPerEm else None
+ italicAngle = self.italicAngleEdit.text()
+ font.info.italicAngle = float(italicAngle) if "." in italicAngle else int(italicAngle) if italicAngle else None
ascender = self.ascenderEdit.text()
- font.info.ascender = int(ascender) if ascender else None
+ font.info.ascender = float(ascender) if "." in ascender else int(ascender) if ascender else None
descender = self.descenderEdit.text()
- font.info.descender = int(descender) if descender else None
- unitsPerEm = self.unitsPerEmEdit.text()
- font.info.unitsPerEm = int(unitsPerEm) if unitsPerEm else None
- xHeight = self.xHeightEdit.text()
- font.info.xHeight = int(xHeight) if xHeight else None
+ font.info.descender = float(descender) if "." in descender else int(descender) if descender else None
capHeight = self.capHeightEdit.text()
- font.info.capHeight = int(capHeight) if capHeight else None
- italicAngle = self.italicAngleEdit.text()
- font.info.italicAngle = float(italicAngle) if italicAngle else None
+ font.info.capHeight = float(capHeight) if "." in capHeight else int(capHeight) if capHeight else None
+ xHeight = self.xHeightEdit.text()
+ font.info.xHeight = float(xHeight) if "." in xHeight else int(xHeight) if xHeight else None
+ note = self.noteEdit.toPlainText()
+ font.info.note = note if note != '' else None
+
+class OpenTypeTab(QWidget):
+ def __init__(self, font, parent=None):
+ super(OpenTypeTab, self).__init__(parent)
+ l = 0
+
+ nameGroup = QGroupBox("name table", self)
+ #nameGroup.setFlat(True)
+ nameLayout = QGridLayout(self)
+
+ preferredFamilyNameLabel = QLabel("Pref. Family Name:", self)
+ self.preferredFamilyNameEdit = QLineEdit(font.info.openTypeNamePreferredFamilyName, self)
+
+ preferredSubfamilyNameLabel = QLabel("Pref. Subfamily Name:", self)
+ self.preferredSubfamilyNameEdit = QLineEdit(font.info.openTypeNamePreferredSubfamilyName, self)
+
+ compatibleFullNameLabel = QLabel("Compatible Full Name:", self)
+ self.compatibleFullNameEdit = QLineEdit(font.info.openTypeNameCompatibleFullName, self)
+
+ WWSFamilyNameLabel = QLabel("WWS Family Name:", self)
+ self.WWSFamilyNameEdit = QLineEdit(font.info.openTypeNameWWSFamilyName, self)
+
+ WWSSubfamilyNameLabel = QLabel("WWS Subfamily Name:", self)
+ self.WWSSubfamilyNameEdit = QLineEdit(font.info.openTypeNameWWSSubfamilyName, self)
+
+ versionLabel = QLabel("Version:", self)
+ self.versionEdit = QLineEdit(font.info.openTypeNameVersion, self)
+
+ uniqueIDLabel = QLabel("Unique ID:", self)
+ self.uniqueIDEdit = QLineEdit(font.info.openTypeNameUniqueID, self)
+
+ descriptionLabel = QLabel("Description:", self)
+ self.descriptionEdit = QLineEdit(font.info.openTypeNameDescription, self)
+
+ sampleTextLabel = QLabel("Sample text:", self)
+ self.sampleTextEdit = QLineEdit(font.info.openTypeNameSampleText, self)
+
+ nameLayout.addWidget(preferredFamilyNameLabel, l, 0)
+ nameLayout.addWidget(self.preferredFamilyNameEdit, l, 1, 1, 2)
+ nameLayout.addWidget(WWSFamilyNameLabel, l, 3)
+ nameLayout.addWidget(self.WWSFamilyNameEdit, l, 4, 1, 2)
+ l += 1
+ nameLayout.addWidget(preferredSubfamilyNameLabel, l, 0)
+ nameLayout.addWidget(self.preferredSubfamilyNameEdit, l, 1, 1, 2)
+ nameLayout.addWidget(WWSSubfamilyNameLabel, l, 3)
+ nameLayout.addWidget(self.WWSSubfamilyNameEdit, l, 4, 1, 2)
+ l += 1
+ nameLayout.addWidget(compatibleFullNameLabel, l, 0)
+ nameLayout.addWidget(self.compatibleFullNameEdit, l, 1, 1, 2)
+ l += 1
+ nameLayout.addWidget(versionLabel, l, 0)
+ nameLayout.addWidget(self.versionEdit, l, 1, 1, 2)
+ nameLayout.addWidget(uniqueIDLabel, l, 3)
+ nameLayout.addWidget(self.uniqueIDEdit, l, 4, 1, 2)
+ l += 1
+ nameLayout.addWidget(descriptionLabel, l, 0)
+ nameLayout.addWidget(self.descriptionEdit, l, 1, 1, 2)
+ nameLayout.addWidget(sampleTextLabel, l, 3)
+ nameLayout.addWidget(self.sampleTextEdit, l, 4, 1, 2)
+ nameGroup.setLayout(nameLayout)
+ l = 0
+
+ hheaGroup = QGroupBox("hhea table", self)
+ #hheaGroup.setFlat(True)
+ hheaLayout = QGridLayout(self)
+
+ ascenderLabel = QLabel("Ascender:", self)
+ ascender = str(font.info.openTypeHheaAscender) if font.info.openTypeHheaAscender is not None else ''
+ self.ascenderEdit = QLineEdit(ascender, self)
+ self.ascenderEdit.setValidator(QIntValidator(self))
+
+ descenderLabel = QLabel("Descender:", self)
+ descender = str(font.info.openTypeHheaDescender) if font.info.openTypeHheaDescender is not None else ''
+ self.descenderEdit = QLineEdit(descender, self)
+ self.descenderEdit.setValidator(QIntValidator(self))
+
+ lineGapLabel = QLabel("LineGap:", self)
+ lineGap = str(font.info.openTypeHheaLineGap) if font.info.openTypeHheaLineGap is not None else ''
+ self.lineGapEdit = QLineEdit(lineGap, self)
+ self.lineGapEdit.setValidator(QIntValidator(self))
+
+ caretSlopeRiseLabel = QLabel("caretSlopeRise:", self)
+ caretSlopeRise = str(font.info.openTypeHheaCaretSlopeRise) if font.info.openTypeHheaCaretSlopeRise is not None else ''
+ self.caretSlopeRiseEdit = QLineEdit(caretSlopeRise, self)
+ self.caretSlopeRiseEdit.setValidator(QIntValidator(self))
+
+ caretSlopeRunLabel = QLabel("caretSlopeRun:", self)
+ caretSlopeRun = str(font.info.openTypeHheaCaretSlopeRun) if font.info.openTypeHheaCaretSlopeRun is not None else ''
+ self.caretSlopeRunEdit = QLineEdit(caretSlopeRun, self)
+ self.caretSlopeRunEdit.setValidator(QIntValidator(self))
+
+ caretOffsetLabel = QLabel("caretOffset:", self)
+ caretOffset = str(font.info.openTypeHheaCaretOffset) if font.info.openTypeHheaCaretOffset is not None else ''
+ self.caretOffsetEdit = QLineEdit(caretOffset, self)
+ self.caretOffsetEdit.setValidator(QIntValidator(self))
+
+ hheaLayout.addWidget(ascenderLabel, l, 0)
+ hheaLayout.addWidget(self.ascenderEdit, l, 1, 1, 2)
+ hheaLayout.addWidget(caretSlopeRiseLabel, l, 3)
+ hheaLayout.addWidget(self.caretSlopeRiseEdit, l, 4, 1, 2)
+ l += 1
+ hheaLayout.addWidget(descenderLabel, l, 0)
+ hheaLayout.addWidget(self.descenderEdit, l, 1, 1, 2)
+ hheaLayout.addWidget(caretSlopeRunLabel, l, 3)
+ hheaLayout.addWidget(self.caretSlopeRunEdit, l, 4, 1, 2)
+ l += 1
+ hheaLayout.addWidget(lineGapLabel, l, 0)
+ hheaLayout.addWidget(self.lineGapEdit, l, 1, 1, 2)
+ hheaLayout.addWidget(caretOffsetLabel, l, 3)
+ hheaLayout.addWidget(self.caretOffsetEdit, l, 4, 1, 2)
+ hheaGroup.setLayout(hheaLayout)
+ l = 0
+
+ vheaGroup = QGroupBox("vhea table", self)
+ #vheaGroup.setFlat(True)
+ vheaLayout = QGridLayout(self)
+
+ vertTypoAscenderLabel = QLabel("vertTypoAscender:", self)
+ vertTypoAscender = str(font.info.openTypeVheaVertTypoAscender) if font.info.openTypeVheaVertTypoAscender is not None else ''
+ self.vertTypoAscenderEdit = QLineEdit(vertTypoAscender, self)
+ self.vertTypoAscenderEdit.setValidator(QIntValidator(self))
+
+ vertTypoDescenderLabel = QLabel("vertTypoDescender:", self)
+ vertTypoDescender = str(font.info.openTypeVheaVertTypoDescender) if font.info.openTypeVheaVertTypoDescender is not None else ''
+ self.vertTypoDescenderEdit = QLineEdit(vertTypoDescender, self)
+ self.vertTypoDescenderEdit.setValidator(QIntValidator(self))
+
+ vertTypoLineGapLabel = QLabel("vertTypoLineGap:", self)
+ vertTypoLineGap = str(font.info.openTypeVheaVertTypoLineGap) if font.info.openTypeVheaVertTypoLineGap is not None else ''
+ self.vertTypoLineGapEdit = QLineEdit(vertTypoLineGap, self)
+ self.vertTypoLineGapEdit.setValidator(QIntValidator(self))
+
+ vheaCaretSlopeRiseLabel = QLabel("caretSlopeRise:", self)
+ vheaCaretSlopeRise = str(font.info.openTypeVheaCaretSlopeRise) if font.info.openTypeVheaCaretSlopeRise is not None else ''
+ self.vheaCaretSlopeRiseEdit = QLineEdit(vheaCaretSlopeRise, self)
+ self.vheaCaretSlopeRiseEdit.setValidator(QIntValidator(self))
+
+ vheaCaretSlopeRunLabel = QLabel("caretSlopeRun:", self)
+ vheaCaretSlopeRun = str(font.info.openTypeVheaCaretSlopeRun) if font.info.openTypeVheaCaretSlopeRun is not None else ''
+ self.vheaCaretSlopeRunEdit = QLineEdit(vheaCaretSlopeRun, self)
+ self.vheaCaretSlopeRunEdit.setValidator(QIntValidator(self))
+
+ vheaCaretOffsetLabel = QLabel("caretOffset:", self)
+ vheaCaretOffset = str(font.info.openTypeVheaCaretOffset) if font.info.openTypeVheaCaretOffset is not None else ''
+ self.vheaCaretOffsetEdit = QLineEdit(vheaCaretOffset, self)
+ self.vheaCaretOffsetEdit.setValidator(QIntValidator(self))
+
+ vheaLayout.addWidget(vertTypoAscenderLabel, l, 0)
+ vheaLayout.addWidget(self.vertTypoAscenderEdit, l, 1, 1, 2)
+ vheaLayout.addWidget(vheaCaretSlopeRiseLabel, l, 3)
+ vheaLayout.addWidget(self.vheaCaretSlopeRiseEdit, l, 4, 1, 2)
+ l += 1
+ vheaLayout.addWidget(vertTypoDescenderLabel, l, 0)
+ vheaLayout.addWidget(self.vertTypoDescenderEdit, l, 1, 1, 2)
+ vheaLayout.addWidget(vheaCaretSlopeRunLabel, l, 3)
+ vheaLayout.addWidget(self.vheaCaretSlopeRunEdit, l, 4, 1, 2)
+ l += 1
+ vheaLayout.addWidget(vertTypoLineGapLabel, l, 0)
+ vheaLayout.addWidget(self.vertTypoLineGapEdit, l, 1, 1, 2)
+ vheaLayout.addWidget(vheaCaretOffsetLabel, l, 3)
+ vheaLayout.addWidget(self.vheaCaretOffsetEdit, l, 4, 1, 2)
+ vheaGroup.setLayout(vheaLayout)
+ l = 0
+
+ mainLayout = QVBoxLayout()
+ mainLayout.addWidget(nameGroup)
+ mainLayout.addWidget(hheaGroup)
+ mainLayout.addWidget(vheaGroup)
+ self.setLayout(mainLayout)
+
+ def writeValues(self, font):
+ preferredFamilyName = self.preferredFamilyNameEdit.text()
+ font.info.openTypeNamePreferredFamilyName = preferredFamilyName if preferredFamilyName != '' else None
+ preferredSubfamilyName = self.preferredSubfamilyNameEdit.text()
+ font.info.openTypeNamePreferredSubfamilyName = preferredSubfamilyName if preferredSubfamilyName != '' else None
+ WWSFamilyName = self.WWSFamilyNameEdit.text()
+ font.info.openTypeNameWWSFamilyName = WWSFamilyName if WWSFamilyName != '' else None
+ WWSSubfamilyName = self.WWSSubfamilyNameEdit.text()
+ font.info.openTypeNameWWSSubfamilyName = WWSSubfamilyName if WWSSubfamilyName != '' else None
+ compatibleFullName = self.compatibleFullNameEdit.text()
+ font.info.openTypeNameCompatibleFullName = compatibleFullName if compatibleFullName != '' else None
+ version = self.versionEdit.text()
+ font.info.openTypeNameVersion = version if version != '' else None
+ uniqueID = self.uniqueIDEdit.text()
+ font.info.openTypeNameUniqueID = int(uniqueID) if uniqueID != '' else None
+ description = self.descriptionEdit.text()
+ font.info.openTypeNameDescription = description if description != '' else None
+ sampleText = self.sampleTextEdit.text()
+ font.info.openTypeNameSampleText = sampleText if sampleText != '' else None
+ ascender = self.ascenderEdit.text()
+ font.info.openTypeHheaAscender = int(ascender) if ascender != '' else None
+ descender = self.descenderEdit.text()
+ font.info.openTypeHheaDescender = int(descender) if descender != '' else None
+ lineGap = self.lineGapEdit.text()
+ font.info.openTypeHheaLineGap = int(lineGap) if lineGap != '' else None
+ caretSlopeRise = self.caretSlopeRiseEdit.text()
+ font.info.openTypeHheaCaretSlopeRise = int(caretSlopeRise) if caretSlopeRise != '' else None
+ caretSlopeRun = self.caretSlopeRunEdit.text()
+ font.info.openTypeHheaCaretSlopeRun = int(caretSlopeRun) if caretSlopeRun != '' else None
+ caretOffset = self.caretOffsetEdit.text()
+ font.info.openTypeHheaCaretOffset = int(caretOffset) if caretOffset != '' else None
+ vertTypoAscender = self.vertTypoAscenderEdit.text()
+ font.info.openTypeVheaAscender = int(vertTypoAscender) if vertTypoAscender != '' else None
+ vertTypoDescender = self.vertTypoDescenderEdit.text()
+ font.info.openTypeVheaDescender = int(vertTypoDescender) if vertTypoDescender != '' else None
+ vertTypoLineGap = self.vertTypoLineGapEdit.text()
+ font.info.openTypeVheaLineGap = int(vertTypoLineGap) if vertTypoLineGap != '' else None
+ vheaCaretSlopeRise = self.vheaCaretSlopeRiseEdit.text()
+ font.info.openTypeVheaCaretSlopeRise = int(vheaCaretSlopeRise) if vheaCaretSlopeRise != '' else None
+ vheaCaretSlopeRun = self.vheaCaretSlopeRunEdit.text()
+ font.info.openTypeVheaCaretSlopeRun = int(vheaCaretSlopeRun) if vheaCaretSlopeRun != '' else None
+ vheaCaretOffset = self.vheaCaretOffsetEdit.text()
+ font.info.openTypeVheaCaretOffset = int(vheaCaretOffset) if vheaCaretOffset != '' else None
+
+class PostScriptTab(QWidget):
+ def __init__(self, font, parent=None):
+ super(PostScriptTab, self).__init__(parent)
+ l = 0
+
+ namingGroup = QGroupBox("Naming", self)
+ #namingGroup.setFlat(True)
+ namingLayout = QGridLayout(self)
+
+ fontNameLabel = QLabel("FontName:", self)
+ self.fontNameEdit = QLineEdit(font.info.postscriptFontName, self)
+
+ fullNameLabel = QLabel("FullName:", self)
+ self.fullNameEdit = QLineEdit(font.info.postscriptFullName, self)
+
+ weightNameLabel = QLabel("WeightName:", self)
+ self.weightNameEdit = QLineEdit(font.info.postscriptWeightName, self)
+
+ uniqueIDLabel = QLabel("Unique ID:", self)
+ uniqueID = str(font.info.postscriptUniqueID) if font.info.postscriptUniqueID is not None else ''
+ self.uniqueIDEdit = QLineEdit(uniqueID, self)
+ self.uniqueIDEdit.setValidator(QIntValidator(self))
+
+ namingLayout.addWidget(fontNameLabel, l, 0)
+ namingLayout.addWidget(self.fontNameEdit, l, 1, 1, 2)
+ namingLayout.addWidget(weightNameLabel, l, 3)
+ namingLayout.addWidget(self.weightNameEdit, l, 4, 1, 2)
+ l += 1
+ namingLayout.addWidget(fullNameLabel, l, 0)
+ namingLayout.addWidget(self.fullNameEdit, l, 1, 1, 2)
+ namingLayout.addWidget(uniqueIDLabel, l, 3)
+ namingLayout.addWidget(self.uniqueIDEdit, l, 4, 1, 2)
+ namingGroup.setLayout(namingLayout)
+ l = 0
+
+ hintingGroup = QGroupBox("Hinting", self)
+ #hintingGroup.setFlat(True)
+ hintingLayout = QGridLayout(self)
+
+ blueValuesLabel = QLabel("Blue values:", self)
+ blueValues = " ".join((str(val) for val in font.info.postscriptBlueValues))
+ self.blueValuesEdit = QLineEdit(blueValues, self)
+
+ otherBluesLabel = QLabel("Other blues:", self)
+ otherBlues = " ".join((str(val) for val in font.info.postscriptOtherBlues))
+ self.otherBluesEdit = QLineEdit(otherBlues, self)
+
+ familyBluesLabel = QLabel("Family blues:", self)
+ familyBlues = " ".join((str(val) for val in font.info.postscriptFamilyBlues))
+ self.familyBluesEdit = QLineEdit(familyBlues, self)
+
+ familyOtherBluesLabel = QLabel("Family other blues:", self)
+ familyOtherBlues = " ".join((str(val) for val in font.info.postscriptFamilyOtherBlues))
+ self.familyOtherBluesEdit = QLineEdit(familyOtherBlues, self)
+
+ hintingLayout.addWidget(blueValuesLabel, l, 0)
+ hintingLayout.addWidget(self.blueValuesEdit, l, 1, 1, 2)
+ hintingLayout.addWidget(familyBluesLabel, l, 3)
+ hintingLayout.addWidget(self.familyBluesEdit, l, 4, 1, 2)
+ l += 1
+ hintingLayout.addWidget(otherBluesLabel, l, 0)
+ hintingLayout.addWidget(self.otherBluesEdit, l, 1, 1, 2)
+ hintingLayout.addWidget(familyOtherBluesLabel, l, 3)
+ hintingLayout.addWidget(self.familyOtherBluesEdit, l, 4, 1, 2)
+ l += 1
+
+ blueFuzzLabel = QLabel("Blue fuzz:", self)
+ blueFuzz = str(font.info.postscriptBlueFuzz) if font.info.postscriptBlueFuzz is not None else ''
+ self.blueFuzzEdit = QLineEdit(blueFuzz, self)
+ self.blueFuzzEdit.setValidator(QDoubleValidator(self))
+
+ stemSnapHLabel = QLabel("StemSnapH:", self)
+ stemSnapH = " ".join((str(val) for val in font.info.postscriptStemSnapH))
+ self.stemSnapHEdit = QLineEdit(stemSnapH, self)
+
+ blueScaleLabel = QLabel("Blue scale:", self)
+ blueScale = str(font.info.postscriptBlueScale) if font.info.postscriptBlueScale is not None else ''
+ self.blueScaleEdit = QLineEdit(blueScale, self)
+ self.blueScaleEdit.setValidator(QDoubleValidator(self))
+
+ stemSnapVLabel = QLabel("StemSnapV:", self)
+ stemSnapV = " ".join((str(val) for val in font.info.postscriptStemSnapV))
+ self.stemSnapVEdit = QLineEdit(stemSnapV, self)
+
+ blueShiftLabel = QLabel("Blue shift:", self)
+ blueShift = str(font.info.postscriptBlueShift) if font.info.postscriptBlueShift is not None else ''
+ self.blueShiftEdit = QLineEdit(blueShift, self)
+ self.blueShiftEdit.setValidator(QDoubleValidator(self))
+
+ forceBoldLabel = QLabel("Force bold:", self)
+ forceBold = font.info.postscriptForceBold
+ self.forceBoldBox = QCheckBox(self)
+ self.forceBoldBox.setTristate()
+ if forceBold is None: self.forceBoldBox.setCheckState(Qt.PartiallyChecked)
+ else: self.forceBoldBox.setChecked(forceBold)
+
+ hintingLayout.addWidget(blueFuzzLabel, l, 0)
+ hintingLayout.addWidget(self.blueFuzzEdit, l, 1, 1, 2)
+ hintingLayout.addWidget(stemSnapHLabel, l, 3)
+ hintingLayout.addWidget(self.stemSnapHEdit, l, 4, 1, 2)
+ l += 1
+ hintingLayout.addWidget(blueScaleLabel, l, 0)
+ hintingLayout.addWidget(self.blueScaleEdit, l, 1, 1, 2)
+ hintingLayout.addWidget(stemSnapVLabel, l, 3)
+ hintingLayout.addWidget(self.stemSnapVEdit, l, 4, 1, 2)
+ l += 1
+ hintingLayout.addWidget(blueShiftLabel, l, 0)
+ hintingLayout.addWidget(self.blueShiftEdit, l, 1, 1, 2)
+ hintingLayout.addWidget(forceBoldLabel, l, 3)
+ hintingLayout.addWidget(self.forceBoldBox, l, 4, 1, 2)
+ hintingGroup.setLayout(hintingLayout)
+ l = 0
+
+ metricsGroup = QGroupBox("Metrics", self)
+ #metricsGroup.setFlat(True)
+ metricsLayout = QGridLayout(self)
+
+ defaultWidthXLabel = QLabel("DefaultWidthX:", self)
+ defaultWidthX = str(font.info.postscriptDefaultWidthX) if font.info.postscriptDefaultWidthX is not None else ''
+ self.defaultWidthXEdit = QLineEdit(defaultWidthX, self)
+ self.defaultWidthXEdit.setValidator(QDoubleValidator(self))
+
+ underlineThicknessLabel = QLabel("UnderlineThickness:", self)
+ underlineThickness = str(font.info.postscriptUnderlineThickness) if font.info.postscriptUnderlineThickness is not None else ''
+ self.underlineThicknessEdit = QLineEdit(underlineThickness, self)
+ self.underlineThicknessEdit.setValidator(QDoubleValidator(self))
+
+ nominalWidthXLabel = QLabel("NominalWidthX:", self)
+ nominalWidthX = str(font.info.postscriptNominalWidthX) if font.info.postscriptNominalWidthX is not None else ''
+ self.nominalWidthXEdit = QLineEdit(nominalWidthX, self)
+ self.nominalWidthXEdit.setValidator(QDoubleValidator(self))
+
+ underlinePositionLabel = QLabel("UnderlinePosition:", self)
+ underlinePosition = str(font.info.postscriptUnderlinePosition) if font.info.postscriptUnderlinePosition is not None else ''
+ self.underlinePositionEdit = QLineEdit(underlinePosition, self)
+ self.underlinePositionEdit.setValidator(QDoubleValidator(self))
+
+ slantAngleLabel = QLabel("SlantAngle:", self)
+ slantAngle = str(font.info.postscriptSlantAngle) if font.info.postscriptSlantAngle is not None else ''
+ self.slantAngleEdit = QLineEdit(slantAngle, self)
+ self.slantAngleEdit.setValidator(QDoubleValidator(self))
+
+ isFixedPitchLabel = QLabel("isFixedPitched:", self)
+ isFixedPitch = font.info.postscriptIsFixedPitch
+ self.isFixedPitchBox = QCheckBox(self)
+ self.isFixedPitchBox.setTristate()
+ if isFixedPitch is None: self.isFixedPitchBox.setCheckState(Qt.PartiallyChecked)
+ else: self.isFixedPitchBox.setChecked(isFixedPitch)
+
+ metricsLayout.addWidget(defaultWidthXLabel, l, 0)
+ metricsLayout.addWidget(self.defaultWidthXEdit, l, 1, 1, 2)
+ metricsLayout.addWidget(underlineThicknessLabel, l, 3)
+ metricsLayout.addWidget(self.underlineThicknessEdit, l, 4, 1, 2)
+ l += 1
+ metricsLayout.addWidget(nominalWidthXLabel, l, 0)
+ metricsLayout.addWidget(self.nominalWidthXEdit, l, 1, 1, 2)
+ metricsLayout.addWidget(underlinePositionLabel, l, 3)
+ metricsLayout.addWidget(self.underlinePositionEdit, l, 4, 1, 2)
+ l += 1
+ metricsLayout.addWidget(slantAngleLabel, l, 0)
+ metricsLayout.addWidget(self.slantAngleEdit, l, 1, 1, 2)
+ metricsLayout.addWidget(isFixedPitchLabel, l, 3)
+ metricsLayout.addWidget(self.isFixedPitchBox, l, 4, 1, 2)
+ metricsGroup.setLayout(metricsLayout)
+ l = 0
+
+ charactersGroup = QGroupBox("Characters", self)
+ #charactersGroup.setFlat(True)
+ charactersLayout = QGridLayout(self)
+
+ defaultCharacterLabel = QLabel("Default character:", self)
+ self.defaultCharacterEdit = QLineEdit(font.info.postscriptDefaultCharacter, self)
+
+ windowsCharacterSetLabel = QLabel("Windows character set:", self)
+ self.windowsCharacterSetDrop = QComboBox(self)
+ items = ["None", "ANSI", "Default", "Symbol", "Macintosh", "Shift JIS", "Hangul", "Hangul (Johab)", "GB2312",
+ "Chinese BIG5", "Greek", "Turkish", "Vietnamese", "Hebrew", "Arabic", "Baltic", "Bitstream",
+ "Cyrillic", "Thai", "Eastern European", "OEM"]
+ # windowsCharacterSet = {
+ # "ANSI": 1,
+ # "Default": 2,
+ # "Symbol": 3,
+ # "Macintosh": 4,
+ # "Shift JIS": 5,
+ # "Hangul": 6,
+ # "Hangul (Johab)": 7,
+ # "GB2312": 8,
+ # "Chinese BIG5": 9,
+ # "Greek": 10,
+ # "Turkish": 11,
+ # "Vietnamese": 12,
+ # "Hebrew": 13,
+ # "Arabic": 14,
+ # "Baltic": 15,
+ # "Bitstream": 16,
+ # "Cyrillic": 17,
+ # "Thai": 18,
+ # "Eastern European": 19,
+ # "OEM": 20,
+ # }
+ self.windowsCharacterSetDrop.insertItems(0, items)
+ if font.info.postscriptWindowsCharacterSet is not None:
+ self.windowsCharacterSetDrop.setCurrentIndex(font.info.postscriptWindowsCharacterSet)
+ #else:
+ # self.windowsCharacterSetDrop.setCurrentIndex(0)
+
+ charactersLayout.addWidget(defaultCharacterLabel, l, 0)
+ charactersLayout.addWidget(self.defaultCharacterEdit, l, 1, 1, 2)
+ charactersLayout.addWidget(windowsCharacterSetLabel, l, 3)
+ charactersLayout.addWidget(self.windowsCharacterSetDrop, l, 4, 1, 2)
+ charactersGroup.setLayout(charactersLayout)
+ #l = 0
+
+ mainLayout = QVBoxLayout()
+ mainLayout.addWidget(namingGroup)
+ mainLayout.addWidget(hintingGroup)
+ mainLayout.addWidget(metricsGroup)
+ mainLayout.addWidget(charactersGroup)
+ self.setLayout(mainLayout)
+
+ def writeValues(self, font):
+ fontName = self.fontNameEdit.text()
+ font.info.postscriptFontName = fontName if fontName != '' else None
+ fullName = self.fullNameEdit.text()
+ font.info.postscriptFullName = fullName if fullName != '' else None
+ weightName = self.weightNameEdit.text()
+ font.info.postscriptWeightName = weightName if weightName != '' else None
+ uniqueID = self.uniqueIDEdit.text()
+ font.info.postscriptUniqueID = int(uniqueID) if uniqueID != '' else None
+ blueValues = self.blueValuesEdit.text().split(" ")
+ if blueValues is None:
+ font.info.postscriptBlueValues = None
+ else:
+ blues = []
+ for blue in blueValues:
+ if blue != '':
+ blues.append(int(blue))
+ font.info.postscriptBlueValues = blues
+ otherBlues = self.otherBluesEdit.text().split(" ")
+ if otherBlues is None:
+ font.info.postscriptOtherBlues = None
+ else:
+ blues = []
+ for blue in otherBlues:
+ if blue != '':
+ blues.append(int(blue))
+ font.info.postscriptOtherBlues = blues
+ familyBlues = self.familyBluesEdit.text().split(" ")
+ if familyBlues is None:
+ font.info.postscriptFamilyBlues = None
+ else:
+ blues = []
+ for blue in familyBlues:
+ if blue != '':
+ blues.append(int(blue))
+ font.info.postscriptFamilyBlues = blues
+ familyOtherBlues = self.familyOtherBluesEdit.text().split(" ")
+ if familyOtherBlues is None:
+ font.info.postscriptFamilyOtherBlues = None
+ else:
+ blues = []
+ for blue in familyOtherBlues:
+ if blue != '':
+ blues.append(int(blue))
+ font.info.postscriptFamilyOtherBlues = blues
+ blueFuzz = self.blueFuzzEdit.text()
+ font.info.postscriptBlueFuzz = float(blueFuzz) if "." in blueFuzz else int(blueFuzz) if blueFuzz != '' else None
+ blueScale = self.blueScaleEdit.text()
+ font.info.postscriptBlueScale = float(blueScale) if blueScale != '' else None
+ blueShift = self.blueShiftEdit.text()
+ font.info.postscriptBlueShift = float(blueShift) if "." in blueShift else int(blueShift) if blueShift != '' else None
+ stemSnapH = self.stemSnapHEdit.text().split(" ")
+ if stemSnapH is None:
+ font.info.postscriptStemSnapH = None
+ else:
+ stems = []
+ for stem in stemSnapH:
+ if stem != '':
+ stems.append(int(stem))
+ font.info.postscriptStemSnapH = stems
+ stemSnapV = self.stemSnapVEdit.text().split(" ")
+ if stemSnapV is None:
+ font.info.postscriptStemSnapV = None
+ else:
+ stems = []
+ for stem in stemSnapV:
+ if stem != '':
+ stems.append(int(stem))
+ font.info.postscriptStemSnapV = stems
+ forceBold = self.forceBoldBox.checkState()
+ if forceBold == Qt.PartiallyChecked:
+ font.info.postscriptForceBold = None
+ else:
+ font.info.postscriptForceBold = bool(forceBold)
+ defaultWidthX = self.defaultWidthXEdit.text()
+ font.info.postscriptDefaultWidthX = float(defaultWidthX) if "." in defaultWidthX else int(defaultWidthX) if defaultWidthX != '' else None
+ nominalWidthX = self.nominalWidthXEdit.text()
+ font.info.postscriptNominalWidthX = float(nominalWidthX) if "." in nominalWidthX else int(nominalWidthX) if nominalWidthX != '' else None
+ underlineThickness = self.underlineThicknessEdit.text()
+ font.info.postscriptUnderlineThickness = float(underlineThickness) if "." in underlineThickness else int(underlineThickness) if underlineThickness != '' else None
+ underlinePosition = self.underlinePositionEdit.text()
+ font.info.postscriptUnderlinePosition = float(underlinePosition) if "." in underlinePosition else int(underlinePosition) if underlinePosition != '' else None
+ slantAngle = self.slantAngleEdit.text()
+ font.info.postscriptSlantAngle = float(slantAngle) if "." in slantAngle else int(slantAngle) if slantAngle != '' else None
+ isFixedPitch = self.isFixedPitchBox.checkState()
+ if isFixedPitch == Qt.PartiallyChecked:
+ font.info.postscriptIsFixedPitch = None
+ else:
+ font.info.postscriptIsFixedPitch = bool(isFixedPitch)
+ defaultCharacter = self.defaultCharacterEdit.text()
+ font.info.postscriptDefaultCharacter = defaultCharacter if defaultCharacter != '' else None
+ windowsCharacterSet = self.windowsCharacterSetDrop.currentIndex()
+ if windowsCharacterSet == 0:
+ font.info.postscriptWindowsCharacterSet = None
+ else:
+ font.info.postscriptWindowsCharacterSet = windowsCharacterSet \ No newline at end of file