root/packages/defcon/trunk/Lib/defcon/objects/info.py

Revision 698, 95.6 kB (checked in by tal, 7 months ago)
Moved the private _notificationName to a new, public changeNotificationName attribute. Raise a deprecation warning if _notificationName is being set by a subclass and automatically move it to the new attribute.
Line 
1 # this file was generated by infoObjectGenerator.py.
2 # this file should not be edited by hand.
3
4 from warnings import warn
5 from robofab import ufoLib
6 from defcon.objects.base import BaseObject
7
8
9 class Info(BaseObject):
10
11     """
12     This object represents info values.
13
14     **This object posts the following notifications:**
15
16     ============  ====
17     Name          Note
18     ============  ====
19     Info.Changed  Posted when the *dirty* attribute is set.
20     ============  ====
21
22     **Note:** The documentation strings here were automatically generated
23     from the `UFO specification <http://unifiedfontobject.org/filestructure/fontinfo.html>`_.
24     """
25
26     changeNotificationName = "Info.Changed"
27     beginUndoNotificationName = "Info.BeginUndo"
28     endUndoNotificationName = "Info.EndUndo"
29     beginRedoNotificationName = "Info.BeginRedo"
30     endRedoNotificationName = "Info.EndRedo"
31
32     def __init__(self):
33         super(Info, self).__init__()
34         self._ascender = None
35         self._capHeight = None
36         self._copyright = None
37         self._descender = None
38         self._familyName = None
39         self._italicAngle = None
40         self._macintoshFONDFamilyID = None
41         self._macintoshFONDName = None
42         self._note = None
43         self._openTypeHeadCreated = None
44         self._openTypeHeadFlags = None
45         self._openTypeHeadLowestRecPPEM = None
46         self._openTypeHheaAscender = None
47         self._openTypeHheaCaretOffset = None
48         self._openTypeHheaCaretSlopeRise = None
49         self._openTypeHheaCaretSlopeRun = None
50         self._openTypeHheaDescender = None
51         self._openTypeHheaLineGap = None
52         self._openTypeNameCompatibleFullName = None
53         self._openTypeNameDescription = None
54         self._openTypeNameDesigner = None
55         self._openTypeNameDesignerURL = None
56         self._openTypeNameLicense = None
57         self._openTypeNameLicenseURL = None
58         self._openTypeNameManufacturer = None
59         self._openTypeNameManufacturerURL = None
60         self._openTypeNamePreferredFamilyName = None
61         self._openTypeNamePreferredSubfamilyName = None
62         self._openTypeNameSampleText = None
63         self._openTypeNameUniqueID = None
64         self._openTypeNameVersion = None
65         self._openTypeNameWWSFamilyName = None
66         self._openTypeNameWWSSubfamilyName = None
67         self._openTypeOS2CodePageRanges = None
68         self._openTypeOS2FamilyClass = None
69         self._openTypeOS2Panose = None
70         self._openTypeOS2Selection = None
71         self._openTypeOS2StrikeoutPosition = None
72         self._openTypeOS2StrikeoutSize = None
73         self._openTypeOS2SubscriptXOffset = None
74         self._openTypeOS2SubscriptXSize = None
75         self._openTypeOS2SubscriptYOffset = None
76         self._openTypeOS2SubscriptYSize = None
77         self._openTypeOS2SuperscriptXOffset = None
78         self._openTypeOS2SuperscriptXSize = None
79         self._openTypeOS2SuperscriptYOffset = None
80         self._openTypeOS2SuperscriptYSize = None
81         self._openTypeOS2Type = None
82         self._openTypeOS2TypoAscender = None
83         self._openTypeOS2TypoDescender = None
84         self._openTypeOS2TypoLineGap = None
85         self._openTypeOS2UnicodeRanges = None
86         self._openTypeOS2VendorID = None
87         self._openTypeOS2WeightClass = None
88         self._openTypeOS2WidthClass = None
89         self._openTypeOS2WinAscent = None
90         self._openTypeOS2WinDescent = None
91         self._openTypeVheaCaretOffset = None
92         self._openTypeVheaCaretSlopeRise = None
93         self._openTypeVheaCaretSlopeRun = None
94         self._openTypeVheaVertTypoAscender = None
95         self._openTypeVheaVertTypoDescender = None
96         self._openTypeVheaVertTypoLineGap = None
97         self._postscriptBlueFuzz = None
98         self._postscriptBlueScale = None
99         self._postscriptBlueShift = None
100         self._postscriptBlueValues = None
101         self._postscriptDefaultCharacter = None
102         self._postscriptDefaultWidthX = None
103         self._postscriptFamilyBlues = None
104         self._postscriptFamilyOtherBlues = None
105         self._postscriptFontName = None
106         self._postscriptForceBold = None
107         self._postscriptFullName = None
108         self._postscriptIsFixedPitch = None
109         self._postscriptNominalWidthX = None
110         self._postscriptOtherBlues = None
111         self._postscriptSlantAngle = None
112         self._postscriptStemSnapH = None
113         self._postscriptStemSnapV = None
114         self._postscriptUnderlinePosition = None
115         self._postscriptUnderlineThickness = None
116         self._postscriptUniqueID = None
117         self._postscriptWeightName = None
118         self._postscriptWindowsCharacterSet = None
119         self._styleMapFamilyName = None
120         self._styleMapStyleName = None
121         self._styleName = None
122         self._trademark = None
123         self._unitsPerEm = None
124         self._versionMajor = None
125         self._versionMinor = None
126         self._xHeight = None
127         self._year = None
128
129     # ----------
130     # Properties
131     # ----------
132
133     def _get_ascender(self):
134         return self._ascender
135
136     def _set_ascender(self, value):
137         if value is None:
138             self._ascender = None
139         else:
140             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("ascender", value)
141             if not valid:
142                 raise ValueError("Invalid value (%s) for attribute ascender." % repr(value))
143             else:
144                 self._ascender = value
145         self.dirty = True
146
147     ascender = property(_get_ascender, _set_ascender, doc="Ascender value. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
148
149     def _get_capHeight(self):
150         return self._capHeight
151
152     def _set_capHeight(self, value):
153         if value is None:
154             self._capHeight = None
155         else:
156             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("capHeight", value)
157             if not valid:
158                 raise ValueError("Invalid value (%s) for attribute capHeight." % repr(value))
159             else:
160                 self._capHeight = value
161         self.dirty = True
162
163     capHeight = property(_get_capHeight, _set_capHeight, doc="Cap height value. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
164
165     def _get_copyright(self):
166         return self._copyright
167
168     def _set_copyright(self, value):
169         if value is None:
170             self._copyright = None
171         else:
172             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("copyright", value)
173             if not valid:
174                 raise ValueError("Invalid value (%s) for attribute copyright." % repr(value))
175             else:
176                 self._copyright = value
177         self.dirty = True
178
179     copyright = property(_get_copyright, _set_copyright, doc="Copyright statement. This should be a string. Setting this will post an *Info.Changed* notification.")
180
181     def _get_descender(self):
182         return self._descender
183
184     def _set_descender(self, value):
185         if value is None:
186             self._descender = None
187         else:
188             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("descender", value)
189             if not valid:
190                 raise ValueError("Invalid value (%s) for attribute descender." % repr(value))
191             else:
192                 self._descender = value
193         self.dirty = True
194
195     descender = property(_get_descender, _set_descender, doc="Descender value. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
196
197     def _get_familyName(self):
198         return self._familyName
199
200     def _set_familyName(self, value):
201         if value is None:
202             self._familyName = None
203         else:
204             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("familyName", value)
205             if not valid:
206                 raise ValueError("Invalid value (%s) for attribute familyName." % repr(value))
207             else:
208                 self._familyName = value
209         self.dirty = True
210
211     familyName = property(_get_familyName, _set_familyName, doc="Family name. This should be a string. Setting this will post an *Info.Changed* notification.")
212
213     def _get_italicAngle(self):
214         return self._italicAngle
215
216     def _set_italicAngle(self, value):
217         if value is None:
218             self._italicAngle = None
219         else:
220             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("italicAngle", value)
221             if not valid:
222                 raise ValueError("Invalid value (%s) for attribute italicAngle." % repr(value))
223             else:
224                 self._italicAngle = value
225         self.dirty = True
226
227     italicAngle = property(_get_italicAngle, _set_italicAngle, doc="Italic angle. This should be a float. Setting this will post an *Info.Changed* notification.")
228
229     def _get_macintoshFONDFamilyID(self):
230         return self._macintoshFONDFamilyID
231
232     def _set_macintoshFONDFamilyID(self, value):
233         if value is None:
234             self._macintoshFONDFamilyID = None
235         else:
236             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("macintoshFONDFamilyID", value)
237             if not valid:
238                 raise ValueError("Invalid value (%s) for attribute macintoshFONDFamilyID." % repr(value))
239             else:
240                 self._macintoshFONDFamilyID = value
241         self.dirty = True
242
243     macintoshFONDFamilyID = property(_get_macintoshFONDFamilyID, _set_macintoshFONDFamilyID, doc="Family ID number. Corresponds to the ffFamID in the FOND resource. This should be a integer. Setting this will post an *Info.Changed* notification.")
244
245     def _get_macintoshFONDName(self):
246         return self._macintoshFONDName
247
248     def _set_macintoshFONDName(self, value):
249         if value is None:
250             self._macintoshFONDName = None
251         else:
252             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("macintoshFONDName", value)
253             if not valid:
254                 raise ValueError("Invalid value (%s) for attribute macintoshFONDName." % repr(value))
255             else:
256                 self._macintoshFONDName = value
257         self.dirty = True
258
259     macintoshFONDName = property(_get_macintoshFONDName, _set_macintoshFONDName, doc="Font name for the FOND resource. This should be a String. Setting this will post an *Info.Changed* notification.")
260
261     def _get_note(self):
262         return self._note
263
264     def _set_note(self, value):
265         if value is None:
266             self._note = None
267         else:
268             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("note", value)
269             if not valid:
270                 raise ValueError("Invalid value (%s) for attribute note." % repr(value))
271             else:
272                 self._note = value
273         self.dirty = True
274
275     note = property(_get_note, _set_note, doc="Arbitrary note about the font. This should be a string. Setting this will post an *Info.Changed* notification.")
276
277     def _get_openTypeHeadCreated(self):
278         return self._openTypeHeadCreated
279
280     def _set_openTypeHeadCreated(self, value):
281         if value is None:
282             self._openTypeHeadCreated = None
283         else:
284             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHeadCreated", value)
285             if not valid:
286                 raise ValueError("Invalid value (%s) for attribute openTypeHeadCreated." % repr(value))
287             else:
288                 self._openTypeHeadCreated = value
289         self.dirty = True
290
291     openTypeHeadCreated = property(_get_openTypeHeadCreated, _set_openTypeHeadCreated, doc="Creation date. Expressed as a string of the format \"YYYY/MM/DD HH:MM:SS\". \"YYYY/MM/DD\" is year/month/day. The month should be in the range 1-12 and the day should be in the range 1-end of month. \"HH:MM:SS\" is hour:minute:second. The hour should be in the range 0:23. The minute and second should each be in the range 0-59. This should be a string. Setting this will post an *Info.Changed* notification.")
292
293     def _get_openTypeHeadFlags(self):
294         return self._openTypeHeadFlags
295
296     def _set_openTypeHeadFlags(self, value):
297         if value is None:
298             self._openTypeHeadFlags = None
299         else:
300             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHeadFlags", value)
301             if not valid:
302                 raise ValueError("Invalid value (%s) for attribute openTypeHeadFlags." % repr(value))
303             else:
304                 self._openTypeHeadFlags = value
305         self.dirty = True
306
307     openTypeHeadFlags = property(_get_openTypeHeadFlags, _set_openTypeHeadFlags, doc="A list of bit numbers indicating the flags. The bit numbers are listed in the OpenType head specification. Corresponds to the OpenType head table flags field. This should be a number list. Setting this will post an *Info.Changed* notification.")
308
309     def _get_openTypeHeadLowestRecPPEM(self):
310         return self._openTypeHeadLowestRecPPEM
311
312     def _set_openTypeHeadLowestRecPPEM(self, value):
313         if value is None:
314             self._openTypeHeadLowestRecPPEM = None
315         else:
316             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHeadLowestRecPPEM", value)
317             if not valid:
318                 raise ValueError("Invalid value (%s) for attribute openTypeHeadLowestRecPPEM." % repr(value))
319             else:
320                 self._openTypeHeadLowestRecPPEM = value
321         self.dirty = True
322
323     openTypeHeadLowestRecPPEM = property(_get_openTypeHeadLowestRecPPEM, _set_openTypeHeadLowestRecPPEM, doc="Smallest readable size in pixels. Corresponds to the OpenType head table lowestRecPPEM field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
324
325     def _get_openTypeHheaAscender(self):
326         return self._openTypeHheaAscender
327
328     def _set_openTypeHheaAscender(self, value):
329         if value is None:
330             self._openTypeHheaAscender = None
331         else:
332             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHheaAscender", value)
333             if not valid:
334                 raise ValueError("Invalid value (%s) for attribute openTypeHheaAscender." % repr(value))
335             else:
336                 self._openTypeHheaAscender = value
337         self.dirty = True
338
339     openTypeHheaAscender = property(_get_openTypeHheaAscender, _set_openTypeHheaAscender, doc="Ascender value. Corresponds to the OpenType hhea table Ascender field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
340
341     def _get_openTypeHheaCaretOffset(self):
342         return self._openTypeHheaCaretOffset
343
344     def _set_openTypeHheaCaretOffset(self, value):
345         if value is None:
346             self._openTypeHheaCaretOffset = None
347         else:
348             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHheaCaretOffset", value)
349             if not valid:
350                 raise ValueError("Invalid value (%s) for attribute openTypeHheaCaretOffset." % repr(value))
351             else:
352                 self._openTypeHheaCaretOffset = value
353         self.dirty = True
354
355     openTypeHheaCaretOffset = property(_get_openTypeHheaCaretOffset, _set_openTypeHheaCaretOffset, doc="Caret offset value. Corresponds to the OpenType hhea table caretOffset field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
356
357     def _get_openTypeHheaCaretSlopeRise(self):
358         return self._openTypeHheaCaretSlopeRise
359
360     def _set_openTypeHheaCaretSlopeRise(self, value):
361         if value is None:
362             self._openTypeHheaCaretSlopeRise = None
363         else:
364             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHheaCaretSlopeRise", value)
365             if not valid:
366                 raise ValueError("Invalid value (%s) for attribute openTypeHheaCaretSlopeRise." % repr(value))
367             else:
368                 self._openTypeHheaCaretSlopeRise = value
369         self.dirty = True
370
371     openTypeHheaCaretSlopeRise = property(_get_openTypeHheaCaretSlopeRise, _set_openTypeHheaCaretSlopeRise, doc="Caret slope rise value. Corresponds to the OpenType hhea table caretSlopeRise field. This should be a integer. Setting this will post an *Info.Changed* notification.")
372
373     def _get_openTypeHheaCaretSlopeRun(self):
374         return self._openTypeHheaCaretSlopeRun
375
376     def _set_openTypeHheaCaretSlopeRun(self, value):
377         if value is None:
378             self._openTypeHheaCaretSlopeRun = None
379         else:
380             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHheaCaretSlopeRun", value)
381             if not valid:
382                 raise ValueError("Invalid value (%s) for attribute openTypeHheaCaretSlopeRun." % repr(value))
383             else:
384                 self._openTypeHheaCaretSlopeRun = value
385         self.dirty = True
386
387     openTypeHheaCaretSlopeRun = property(_get_openTypeHheaCaretSlopeRun, _set_openTypeHheaCaretSlopeRun, doc="Caret slope run value. Corresponds to the OpenType hhea table caretSlopeRun field. This should be a integer. Setting this will post an *Info.Changed* notification.")
388
389     def _get_openTypeHheaDescender(self):
390         return self._openTypeHheaDescender
391
392     def _set_openTypeHheaDescender(self, value):
393         if value is None:
394             self._openTypeHheaDescender = None
395         else:
396             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHheaDescender", value)
397             if not valid:
398                 raise ValueError("Invalid value (%s) for attribute openTypeHheaDescender." % repr(value))
399             else:
400                 self._openTypeHheaDescender = value
401         self.dirty = True
402
403     openTypeHheaDescender = property(_get_openTypeHheaDescender, _set_openTypeHheaDescender, doc="Descender value. Corresponds to the OpenType hhea table Descender field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
404
405     def _get_openTypeHheaLineGap(self):
406         return self._openTypeHheaLineGap
407
408     def _set_openTypeHheaLineGap(self, value):
409         if value is None:
410             self._openTypeHheaLineGap = None
411         else:
412             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeHheaLineGap", value)
413             if not valid:
414                 raise ValueError("Invalid value (%s) for attribute openTypeHheaLineGap." % repr(value))
415             else:
416                 self._openTypeHheaLineGap = value
417         self.dirty = True
418
419     openTypeHheaLineGap = property(_get_openTypeHheaLineGap, _set_openTypeHheaLineGap, doc="Line gap value. Corresponds to the OpenType hhea table LineGap field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
420
421     def _get_openTypeNameCompatibleFullName(self):
422         return self._openTypeNameCompatibleFullName
423
424     def _set_openTypeNameCompatibleFullName(self, value):
425         if value is None:
426             self._openTypeNameCompatibleFullName = None
427         else:
428             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameCompatibleFullName", value)
429             if not valid:
430                 raise ValueError("Invalid value (%s) for attribute openTypeNameCompatibleFullName." % repr(value))
431             else:
432                 self._openTypeNameCompatibleFullName = value
433         self.dirty = True
434
435     openTypeNameCompatibleFullName = property(_get_openTypeNameCompatibleFullName, _set_openTypeNameCompatibleFullName, doc="Compatible full name. Corresponds to the OpenType name table name ID 18. This should be a string. Setting this will post an *Info.Changed* notification.")
436
437     def _get_openTypeNameDescription(self):
438         return self._openTypeNameDescription
439
440     def _set_openTypeNameDescription(self, value):
441         if value is None:
442             self._openTypeNameDescription = None
443         else:
444             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameDescription", value)
445             if not valid:
446                 raise ValueError("Invalid value (%s) for attribute openTypeNameDescription." % repr(value))
447             else:
448                 self._openTypeNameDescription = value
449         self.dirty = True
450
451     openTypeNameDescription = property(_get_openTypeNameDescription, _set_openTypeNameDescription, doc="Description of the font. Corresponds to the OpenType name table name ID 10. This should be a string. Setting this will post an *Info.Changed* notification.")
452
453     def _get_openTypeNameDesigner(self):
454         return self._openTypeNameDesigner
455
456     def _set_openTypeNameDesigner(self, value):
457         if value is None:
458             self._openTypeNameDesigner = None
459         else:
460             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameDesigner", value)
461             if not valid:
462                 raise ValueError("Invalid value (%s) for attribute openTypeNameDesigner." % repr(value))
463             else:
464                 self._openTypeNameDesigner = value
465         self.dirty = True
466
467     openTypeNameDesigner = property(_get_openTypeNameDesigner, _set_openTypeNameDesigner, doc="Designer name. Corresponds to the OpenType name table name ID 9. This should be a string. Setting this will post an *Info.Changed* notification.")
468
469     def _get_openTypeNameDesignerURL(self):
470         return self._openTypeNameDesignerURL
471
472     def _set_openTypeNameDesignerURL(self, value):
473         if value is None:
474             self._openTypeNameDesignerURL = None
475         else:
476             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameDesignerURL", value)
477             if not valid:
478                 raise ValueError("Invalid value (%s) for attribute openTypeNameDesignerURL." % repr(value))
479             else:
480                 self._openTypeNameDesignerURL = value
481         self.dirty = True
482
483     openTypeNameDesignerURL = property(_get_openTypeNameDesignerURL, _set_openTypeNameDesignerURL, doc="URL for the designer. Corresponds to the OpenType name table name ID 12. This should be a string. Setting this will post an *Info.Changed* notification.")
484
485     def _get_openTypeNameLicense(self):
486         return self._openTypeNameLicense
487
488     def _set_openTypeNameLicense(self, value):
489         if value is None:
490             self._openTypeNameLicense = None
491         else:
492             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameLicense", value)
493             if not valid:
494                 raise ValueError("Invalid value (%s) for attribute openTypeNameLicense." % repr(value))
495             else:
496                 self._openTypeNameLicense = value
497         self.dirty = True
498
499     openTypeNameLicense = property(_get_openTypeNameLicense, _set_openTypeNameLicense, doc="License text. Corresponds to the OpenType name table name ID 13. This should be a string. Setting this will post an *Info.Changed* notification.")
500
501     def _get_openTypeNameLicenseURL(self):
502         return self._openTypeNameLicenseURL
503
504     def _set_openTypeNameLicenseURL(self, value):
505         if value is None:
506             self._openTypeNameLicenseURL = None
507         else:
508             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameLicenseURL", value)
509             if not valid:
510                 raise ValueError("Invalid value (%s) for attribute openTypeNameLicenseURL." % repr(value))
511             else:
512                 self._openTypeNameLicenseURL = value
513         self.dirty = True
514
515     openTypeNameLicenseURL = property(_get_openTypeNameLicenseURL, _set_openTypeNameLicenseURL, doc="URL for the license. Corresponds to the OpenType name table name ID 14. This should be a string. Setting this will post an *Info.Changed* notification.")
516
517     def _get_openTypeNameManufacturer(self):
518         return self._openTypeNameManufacturer
519
520     def _set_openTypeNameManufacturer(self, value):
521         if value is None:
522             self._openTypeNameManufacturer = None
523         else:
524             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameManufacturer", value)
525             if not valid:
526                 raise ValueError("Invalid value (%s) for attribute openTypeNameManufacturer." % repr(value))
527             else:
528                 self._openTypeNameManufacturer = value
529         self.dirty = True
530
531     openTypeNameManufacturer = property(_get_openTypeNameManufacturer, _set_openTypeNameManufacturer, doc="Manufacturer name. Corresponds to the OpenType name table name ID 8. This should be a string. Setting this will post an *Info.Changed* notification.")
532
533     def _get_openTypeNameManufacturerURL(self):
534         return self._openTypeNameManufacturerURL
535
536     def _set_openTypeNameManufacturerURL(self, value):
537         if value is None:
538             self._openTypeNameManufacturerURL = None
539         else:
540             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameManufacturerURL", value)
541             if not valid:
542                 raise ValueError("Invalid value (%s) for attribute openTypeNameManufacturerURL." % repr(value))
543             else:
544                 self._openTypeNameManufacturerURL = value
545         self.dirty = True
546
547     openTypeNameManufacturerURL = property(_get_openTypeNameManufacturerURL, _set_openTypeNameManufacturerURL, doc="Manufacturer URL. Corresponds to the OpenType name table name ID 11. This should be a string. Setting this will post an *Info.Changed* notification.")
548
549     def _get_openTypeNamePreferredFamilyName(self):
550         return self._openTypeNamePreferredFamilyName
551
552     def _set_openTypeNamePreferredFamilyName(self, value):
553         if value is None:
554             self._openTypeNamePreferredFamilyName = None
555         else:
556             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNamePreferredFamilyName", value)
557             if not valid:
558                 raise ValueError("Invalid value (%s) for attribute openTypeNamePreferredFamilyName." % repr(value))
559             else:
560                 self._openTypeNamePreferredFamilyName = value
561         self.dirty = True
562
563     openTypeNamePreferredFamilyName = property(_get_openTypeNamePreferredFamilyName, _set_openTypeNamePreferredFamilyName, doc="Preferred family name. Corresponds to the OpenType name table name ID 16. This should be a string. Setting this will post an *Info.Changed* notification.")
564
565     def _get_openTypeNamePreferredSubfamilyName(self):
566         return self._openTypeNamePreferredSubfamilyName
567
568     def _set_openTypeNamePreferredSubfamilyName(self, value):
569         if value is None:
570             self._openTypeNamePreferredSubfamilyName = None
571         else:
572             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNamePreferredSubfamilyName", value)
573             if not valid:
574                 raise ValueError("Invalid value (%s) for attribute openTypeNamePreferredSubfamilyName." % repr(value))
575             else:
576                 self._openTypeNamePreferredSubfamilyName = value
577         self.dirty = True
578
579     openTypeNamePreferredSubfamilyName = property(_get_openTypeNamePreferredSubfamilyName, _set_openTypeNamePreferredSubfamilyName, doc="Preferred subfamily name. Corresponds to the OpenType name table name ID 17. This should be a string. Setting this will post an *Info.Changed* notification.")
580
581     def _get_openTypeNameSampleText(self):
582         return self._openTypeNameSampleText
583
584     def _set_openTypeNameSampleText(self, value):
585         if value is None:
586             self._openTypeNameSampleText = None
587         else:
588             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameSampleText", value)
589             if not valid:
590                 raise ValueError("Invalid value (%s) for attribute openTypeNameSampleText." % repr(value))
591             else:
592                 self._openTypeNameSampleText = value
593         self.dirty = True
594
595     openTypeNameSampleText = property(_get_openTypeNameSampleText, _set_openTypeNameSampleText, doc="Sample text. Corresponds to the OpenType name table name ID 20. This should be a string. Setting this will post an *Info.Changed* notification.")
596
597     def _get_openTypeNameUniqueID(self):
598         return self._openTypeNameUniqueID
599
600     def _set_openTypeNameUniqueID(self, value):
601         if value is None:
602             self._openTypeNameUniqueID = None
603         else:
604             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameUniqueID", value)
605             if not valid:
606                 raise ValueError("Invalid value (%s) for attribute openTypeNameUniqueID." % repr(value))
607             else:
608                 self._openTypeNameUniqueID = value
609         self.dirty = True
610
611     openTypeNameUniqueID = property(_get_openTypeNameUniqueID, _set_openTypeNameUniqueID, doc="Unique ID string. Corresponds to the OpenType name table name ID 3. This should be a string. Setting this will post an *Info.Changed* notification.")
612
613     def _get_openTypeNameVersion(self):
614         return self._openTypeNameVersion
615
616     def _set_openTypeNameVersion(self, value):
617         if value is None:
618             self._openTypeNameVersion = None
619         else:
620             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameVersion", value)
621             if not valid:
622                 raise ValueError("Invalid value (%s) for attribute openTypeNameVersion." % repr(value))
623             else:
624                 self._openTypeNameVersion = value
625         self.dirty = True
626
627     openTypeNameVersion = property(_get_openTypeNameVersion, _set_openTypeNameVersion, doc="Version string. Corresponds to the OpenType name table name ID 5. This should be a string. Setting this will post an *Info.Changed* notification.")
628
629     def _get_openTypeNameWWSFamilyName(self):
630         return self._openTypeNameWWSFamilyName
631
632     def _set_openTypeNameWWSFamilyName(self, value):
633         if value is None:
634             self._openTypeNameWWSFamilyName = None
635         else:
636             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameWWSFamilyName", value)
637             if not valid:
638                 raise ValueError("Invalid value (%s) for attribute openTypeNameWWSFamilyName." % repr(value))
639             else:
640                 self._openTypeNameWWSFamilyName = value
641         self.dirty = True
642
643     openTypeNameWWSFamilyName = property(_get_openTypeNameWWSFamilyName, _set_openTypeNameWWSFamilyName, doc="WWS family name. Corresponds to the OpenType name table name ID 21. This should be a string. Setting this will post an *Info.Changed* notification.")
644
645     def _get_openTypeNameWWSSubfamilyName(self):
646         return self._openTypeNameWWSSubfamilyName
647
648     def _set_openTypeNameWWSSubfamilyName(self, value):
649         if value is None:
650             self._openTypeNameWWSSubfamilyName = None
651         else:
652             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeNameWWSSubfamilyName", value)
653             if not valid:
654                 raise ValueError("Invalid value (%s) for attribute openTypeNameWWSSubfamilyName." % repr(value))
655             else:
656                 self._openTypeNameWWSSubfamilyName = value
657         self.dirty = True
658
659     openTypeNameWWSSubfamilyName = property(_get_openTypeNameWWSSubfamilyName, _set_openTypeNameWWSSubfamilyName, doc="WWS Subfamily name. Corresponds to the OpenType name table name ID 22. This should be a string. Setting this will post an *Info.Changed* notification.")
660
661     def _get_openTypeOS2CodePageRanges(self):
662         return self._openTypeOS2CodePageRanges
663
664     def _set_openTypeOS2CodePageRanges(self, value):
665         if value is None:
666             self._openTypeOS2CodePageRanges = None
667         else:
668             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2CodePageRanges", value)
669             if not valid:
670                 raise ValueError("Invalid value (%s) for attribute openTypeOS2CodePageRanges." % repr(value))
671             else:
672                 self._openTypeOS2CodePageRanges = value
673         self.dirty = True
674
675     openTypeOS2CodePageRanges = property(_get_openTypeOS2CodePageRanges, _set_openTypeOS2CodePageRanges, doc="A list of bit numbers that are supported code page ranges in the font. The bit numbers are listed in the OpenType OS/2 specification. Corresponds to the OpenType OS/2 table ulCodePageRange1 and ulCodePageRange2 fields. This should be a number list. Setting this will post an *Info.Changed* notification.")
676
677     def _get_openTypeOS2FamilyClass(self):
678         return self._openTypeOS2FamilyClass
679
680     def _set_openTypeOS2FamilyClass(self, value):
681         if value is None:
682             self._openTypeOS2FamilyClass = None
683         else:
684             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2FamilyClass", value)
685             if not valid:
686                 raise ValueError("Invalid value (%s) for attribute openTypeOS2FamilyClass." % repr(value))
687             else:
688                 self._openTypeOS2FamilyClass = value
689         self.dirty = True
690
691     openTypeOS2FamilyClass = property(_get_openTypeOS2FamilyClass, _set_openTypeOS2FamilyClass, doc="Two integers representing the IBM font class and font subclass of the font. The first number, representing the class ID, should be in the range 0-14. The second number, representing the subclass, should be in the range 0-15. The numbers are listed in the OpenType OS/2 specification. Corresponds to the OpenType OS/2 table sFamilyClass field. This should be a number list. Setting this will post an *Info.Changed* notification.")
692
693     def _get_openTypeOS2Panose(self):
694         return self._openTypeOS2Panose
695
696     def _set_openTypeOS2Panose(self, value):
697         if value is None:
698             self._openTypeOS2Panose = None
699         else:
700             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2Panose", value)
701             if not valid:
702                 raise ValueError("Invalid value (%s) for attribute openTypeOS2Panose." % repr(value))
703             else:
704                 self._openTypeOS2Panose = value
705         self.dirty = True
706
707     openTypeOS2Panose = property(_get_openTypeOS2Panose, _set_openTypeOS2Panose, doc="The list should contain 10 integers that represent the setting for each category in the Panose specification. The integers correspond with the option numbers in each of the Panose categories. This corresponds to the OpenType OS/2 table Panose field. This should be a number list. Setting this will post an *Info.Changed* notification.")
708
709     def _get_openTypeOS2Selection(self):
710         return self._openTypeOS2Selection
711
712     def _set_openTypeOS2Selection(self, value):
713         if value is None:
714             self._openTypeOS2Selection = None
715         else:
716             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2Selection", value)
717             if not valid:
718                 raise ValueError("Invalid value (%s) for attribute openTypeOS2Selection." % repr(value))
719             else:
720                 self._openTypeOS2Selection = value
721         self.dirty = True
722
723     openTypeOS2Selection = property(_get_openTypeOS2Selection, _set_openTypeOS2Selection, doc="A list of bit numbers indicating the bits that should be set in fsSelection. The bit numbers are listed in the OpenType OS/2 specification. Corresponds to the OpenType OS/2 table selection field. Note: Bits 0 (italic), 5 (bold) and 6 (regular) should not be set here. These bits should be taken from the generic styleMapStyle attribute. This should be a number list. Setting this will post an *Info.Changed* notification.")
724
725     def _get_openTypeOS2StrikeoutPosition(self):
726         return self._openTypeOS2StrikeoutPosition
727
728     def _set_openTypeOS2StrikeoutPosition(self, value):
729         if value is None:
730             self._openTypeOS2StrikeoutPosition = None
731         else:
732             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2StrikeoutPosition", value)
733             if not valid:
734                 raise ValueError("Invalid value (%s) for attribute openTypeOS2StrikeoutPosition." % repr(value))
735             else:
736                 self._openTypeOS2StrikeoutPosition = value
737         self.dirty = True
738
739     openTypeOS2StrikeoutPosition = property(_get_openTypeOS2StrikeoutPosition, _set_openTypeOS2StrikeoutPosition, doc="Strikeout position. Corresponds to the OpenType OS/2 table yStrikeoutPosition field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
740
741     def _get_openTypeOS2StrikeoutSize(self):
742         return self._openTypeOS2StrikeoutSize
743
744     def _set_openTypeOS2StrikeoutSize(self, value):
745         if value is None:
746             self._openTypeOS2StrikeoutSize = None
747         else:
748             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2StrikeoutSize", value)
749             if not valid:
750                 raise ValueError("Invalid value (%s) for attribute openTypeOS2StrikeoutSize." % repr(value))
751             else:
752                 self._openTypeOS2StrikeoutSize = value
753         self.dirty = True
754
755     openTypeOS2StrikeoutSize = property(_get_openTypeOS2StrikeoutSize, _set_openTypeOS2StrikeoutSize, doc="Strikeout size. Corresponds to the OpenType OS/2 table yStrikeoutSize field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
756
757     def _get_openTypeOS2SubscriptXOffset(self):
758         return self._openTypeOS2SubscriptXOffset
759
760     def _set_openTypeOS2SubscriptXOffset(self, value):
761         if value is None:
762             self._openTypeOS2SubscriptXOffset = None
763         else:
764             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2SubscriptXOffset", value)
765             if not valid:
766                 raise ValueError("Invalid value (%s) for attribute openTypeOS2SubscriptXOffset." % repr(value))
767             else:
768                 self._openTypeOS2SubscriptXOffset = value
769         self.dirty = True
770
771     openTypeOS2SubscriptXOffset = property(_get_openTypeOS2SubscriptXOffset, _set_openTypeOS2SubscriptXOffset, doc="Subscript x offset. Corresponds to the OpenType OS/2 table ySubscriptXOffset field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
772
773     def _get_openTypeOS2SubscriptXSize(self):
774         return self._openTypeOS2SubscriptXSize
775
776     def _set_openTypeOS2SubscriptXSize(self, value):
777         if value is None:
778             self._openTypeOS2SubscriptXSize = None
779         else:
780             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2SubscriptXSize", value)
781             if not valid:
782                 raise ValueError("Invalid value (%s) for attribute openTypeOS2SubscriptXSize." % repr(value))
783             else:
784                 self._openTypeOS2SubscriptXSize = value
785         self.dirty = True
786
787     openTypeOS2SubscriptXSize = property(_get_openTypeOS2SubscriptXSize, _set_openTypeOS2SubscriptXSize, doc="Subscript horizontal font size. Corresponds to the OpenType OS/2 table ySubscriptXSize field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
788
789     def _get_openTypeOS2SubscriptYOffset(self):
790         return self._openTypeOS2SubscriptYOffset
791
792     def _set_openTypeOS2SubscriptYOffset(self, value):
793         if value is None:
794             self._openTypeOS2SubscriptYOffset = None
795         else:
796             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2SubscriptYOffset", value)
797             if not valid:
798                 raise ValueError("Invalid value (%s) for attribute openTypeOS2SubscriptYOffset." % repr(value))
799             else:
800                 self._openTypeOS2SubscriptYOffset = value
801         self.dirty = True
802
803     openTypeOS2SubscriptYOffset = property(_get_openTypeOS2SubscriptYOffset, _set_openTypeOS2SubscriptYOffset, doc="Subscript y offset. Corresponds to the OpenType OS/2 table ySubscriptYOffset field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
804
805     def _get_openTypeOS2SubscriptYSize(self):
806         return self._openTypeOS2SubscriptYSize
807
808     def _set_openTypeOS2SubscriptYSize(self, value):
809         if value is None:
810             self._openTypeOS2SubscriptYSize = None
811         else:
812             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2SubscriptYSize", value)
813             if not valid:
814                 raise ValueError("Invalid value (%s) for attribute openTypeOS2SubscriptYSize." % repr(value))
815             else:
816                 self._openTypeOS2SubscriptYSize = value
817         self.dirty = True
818
819     openTypeOS2SubscriptYSize = property(_get_openTypeOS2SubscriptYSize, _set_openTypeOS2SubscriptYSize, doc="Subscript vertical font size. Corresponds to the OpenType OS/2 table ySubscriptYSize field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
820
821     def _get_openTypeOS2SuperscriptXOffset(self):
822         return self._openTypeOS2SuperscriptXOffset
823
824     def _set_openTypeOS2SuperscriptXOffset(self, value):
825         if value is None:
826             self._openTypeOS2SuperscriptXOffset = None
827         else:
828             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2SuperscriptXOffset", value)
829             if not valid:
830                 raise ValueError("Invalid value (%s) for attribute openTypeOS2SuperscriptXOffset." % repr(value))
831             else:
832                 self._openTypeOS2SuperscriptXOffset = value
833         self.dirty = True
834
835     openTypeOS2SuperscriptXOffset = property(_get_openTypeOS2SuperscriptXOffset, _set_openTypeOS2SuperscriptXOffset, doc="Superscript x offset. Corresponds to the OpenType OS/2 table ySuperscriptXOffset field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
836
837     def _get_openTypeOS2SuperscriptXSize(self):
838         return self._openTypeOS2SuperscriptXSize
839
840     def _set_openTypeOS2SuperscriptXSize(self, value):
841         if value is None:
842             self._openTypeOS2SuperscriptXSize = None
843         else:
844             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2SuperscriptXSize", value)
845             if not valid:
846                 raise ValueError("Invalid value (%s) for attribute openTypeOS2SuperscriptXSize." % repr(value))
847             else:
848                 self._openTypeOS2SuperscriptXSize = value
849         self.dirty = True
850
851     openTypeOS2SuperscriptXSize = property(_get_openTypeOS2SuperscriptXSize, _set_openTypeOS2SuperscriptXSize, doc="Superscript horizontal font size. Corresponds to the OpenType OS/2 table ySuperscriptXSize field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
852
853     def _get_openTypeOS2SuperscriptYOffset(self):
854         return self._openTypeOS2SuperscriptYOffset
855
856     def _set_openTypeOS2SuperscriptYOffset(self, value):
857         if value is None:
858             self._openTypeOS2SuperscriptYOffset = None
859         else:
860             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2SuperscriptYOffset", value)
861             if not valid:
862                 raise ValueError("Invalid value (%s) for attribute openTypeOS2SuperscriptYOffset." % repr(value))
863             else:
864                 self._openTypeOS2SuperscriptYOffset = value
865         self.dirty = True
866
867     openTypeOS2SuperscriptYOffset = property(_get_openTypeOS2SuperscriptYOffset, _set_openTypeOS2SuperscriptYOffset, doc="Superscript y offset. Corresponds to the OpenType OS/2 table ySuperscriptYOffset field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
868
869     def _get_openTypeOS2SuperscriptYSize(self):
870         return self._openTypeOS2SuperscriptYSize
871
872     def _set_openTypeOS2SuperscriptYSize(self, value):
873         if value is None:
874             self._openTypeOS2SuperscriptYSize = None
875         else:
876             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2SuperscriptYSize", value)
877             if not valid:
878                 raise ValueError("Invalid value (%s) for attribute openTypeOS2SuperscriptYSize." % repr(value))
879             else:
880                 self._openTypeOS2SuperscriptYSize = value
881         self.dirty = True
882
883     openTypeOS2SuperscriptYSize = property(_get_openTypeOS2SuperscriptYSize, _set_openTypeOS2SuperscriptYSize, doc="Superscript vertical font size. Corresponds to the OpenType OS/2 table ySuperscriptYSize field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
884
885     def _get_openTypeOS2Type(self):
886         return self._openTypeOS2Type
887
888     def _set_openTypeOS2Type(self, value):
889         if value is None:
890             self._openTypeOS2Type = None
891         else:
892             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2Type", value)
893             if not valid:
894                 raise ValueError("Invalid value (%s) for attribute openTypeOS2Type." % repr(value))
895             else:
896                 self._openTypeOS2Type = value
897         self.dirty = True
898
899     openTypeOS2Type = property(_get_openTypeOS2Type, _set_openTypeOS2Type, doc="A list of bit numbers indicating the embedding type. The bit numbers are listed in the OpenType OS/2 specification. Corresponds to the OpenType OS/2 table fsType field. This should be a number list. Setting this will post an *Info.Changed* notification.")
900
901     def _get_openTypeOS2TypoAscender(self):
902         return self._openTypeOS2TypoAscender
903
904     def _set_openTypeOS2TypoAscender(self, value):
905         if value is None:
906             self._openTypeOS2TypoAscender = None
907         else:
908             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2TypoAscender", value)
909             if not valid:
910                 raise ValueError("Invalid value (%s) for attribute openTypeOS2TypoAscender." % repr(value))
911             else:
912                 self._openTypeOS2TypoAscender = value
913         self.dirty = True
914
915     openTypeOS2TypoAscender = property(_get_openTypeOS2TypoAscender, _set_openTypeOS2TypoAscender, doc="Ascender value. Corresponds to the OpenType OS/2 table sTypoAscender field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
916
917     def _get_openTypeOS2TypoDescender(self):
918         return self._openTypeOS2TypoDescender
919
920     def _set_openTypeOS2TypoDescender(self, value):
921         if value is None:
922             self._openTypeOS2TypoDescender = None
923         else:
924             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2TypoDescender", value)
925             if not valid:
926                 raise ValueError("Invalid value (%s) for attribute openTypeOS2TypoDescender." % repr(value))
927             else:
928                 self._openTypeOS2TypoDescender = value
929         self.dirty = True
930
931     openTypeOS2TypoDescender = property(_get_openTypeOS2TypoDescender, _set_openTypeOS2TypoDescender, doc="Descender value. Corresponds to the OpenType OS/2 table sTypoDescender field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
932
933     def _get_openTypeOS2TypoLineGap(self):
934         return self._openTypeOS2TypoLineGap
935
936     def _set_openTypeOS2TypoLineGap(self, value):
937         if value is None:
938             self._openTypeOS2TypoLineGap = None
939         else:
940             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2TypoLineGap", value)
941             if not valid:
942                 raise ValueError("Invalid value (%s) for attribute openTypeOS2TypoLineGap." % repr(value))
943             else:
944                 self._openTypeOS2TypoLineGap = value
945         self.dirty = True
946
947     openTypeOS2TypoLineGap = property(_get_openTypeOS2TypoLineGap, _set_openTypeOS2TypoLineGap, doc="Line gap value. Corresponds to the OpenType OS/2 table sTypoLineGap field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
948
949     def _get_openTypeOS2UnicodeRanges(self):
950         return self._openTypeOS2UnicodeRanges
951
952     def _set_openTypeOS2UnicodeRanges(self, value):
953         if value is None:
954             self._openTypeOS2UnicodeRanges = None
955         else:
956             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2UnicodeRanges", value)
957             if not valid:
958                 raise ValueError("Invalid value (%s) for attribute openTypeOS2UnicodeRanges." % repr(value))
959             else:
960                 self._openTypeOS2UnicodeRanges = value
961         self.dirty = True
962
963     openTypeOS2UnicodeRanges = property(_get_openTypeOS2UnicodeRanges, _set_openTypeOS2UnicodeRanges, doc="A list of bit numbers that are supported Unicode ranges in the font. The bit numbers are listed in the OpenType OS/2 specification. Corresponds to the OpenType OS/2 table ulUnicodeRange1, ulUnicodeRange2, ulUnicodeRange3 and ulUnicodeRange4 fields. This should be a number list. Setting this will post an *Info.Changed* notification.")
964
965     def _get_openTypeOS2VendorID(self):
966         return self._openTypeOS2VendorID
967
968     def _set_openTypeOS2VendorID(self, value):
969         if value is None:
970             self._openTypeOS2VendorID = None
971         else:
972             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2VendorID", value)
973             if not valid:
974                 raise ValueError("Invalid value (%s) for attribute openTypeOS2VendorID." % repr(value))
975             else:
976                 self._openTypeOS2VendorID = value
977         self.dirty = True
978
979     openTypeOS2VendorID = property(_get_openTypeOS2VendorID, _set_openTypeOS2VendorID, doc="Four character identifier for the creator of the font. Corresponds to the OpenType OS/2 table achVendID field. This should be a string. Setting this will post an *Info.Changed* notification.")
980
981     def _get_openTypeOS2WeightClass(self):
982         return self._openTypeOS2WeightClass
983
984     def _set_openTypeOS2WeightClass(self, value):
985         if value is None:
986             self._openTypeOS2WeightClass = None
987         else:
988             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2WeightClass", value)
989             if not valid:
990                 raise ValueError("Invalid value (%s) for attribute openTypeOS2WeightClass." % repr(value))
991             else:
992                 self._openTypeOS2WeightClass = value
993         self.dirty = True
994
995     openTypeOS2WeightClass = property(_get_openTypeOS2WeightClass, _set_openTypeOS2WeightClass, doc="Weight class value. Must be a positive integer. Corresponds to the OpenType OS/2 table usWeightClass field. This should be a integer. Setting this will post an *Info.Changed* notification.")
996
997     def _get_openTypeOS2WidthClass(self):
998         return self._openTypeOS2WidthClass
999
1000     def _set_openTypeOS2WidthClass(self, value):
1001         if value is None:
1002             self._openTypeOS2WidthClass = None
1003         else:
1004             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2WidthClass", value)
1005             if not valid:
1006                 raise ValueError("Invalid value (%s) for attribute openTypeOS2WidthClass." % repr(value))
1007             else:
1008                 self._openTypeOS2WidthClass = value
1009         self.dirty = True
1010
1011     openTypeOS2WidthClass = property(_get_openTypeOS2WidthClass, _set_openTypeOS2WidthClass, doc="Width class value. Must be in the range 1-9. Corresponds to the OpenType OS/2 table usWidthClass field. This should be a integer. Setting this will post an *Info.Changed* notification.")
1012
1013     def _get_openTypeOS2WinAscent(self):
1014         return self._openTypeOS2WinAscent
1015
1016     def _set_openTypeOS2WinAscent(self, value):
1017         if value is None:
1018             self._openTypeOS2WinAscent = None
1019         else:
1020             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2WinAscent", value)
1021             if not valid:
1022                 raise ValueError("Invalid value (%s) for attribute openTypeOS2WinAscent." % repr(value))
1023             else:
1024                 self._openTypeOS2WinAscent = value
1025         self.dirty = True
1026
1027     openTypeOS2WinAscent = property(_get_openTypeOS2WinAscent, _set_openTypeOS2WinAscent, doc="Ascender value. Corresponds to the OpenType OS/2 table usWinAscent field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1028
1029     def _get_openTypeOS2WinDescent(self):
1030         return self._openTypeOS2WinDescent
1031
1032     def _set_openTypeOS2WinDescent(self, value):
1033         if value is None:
1034             self._openTypeOS2WinDescent = None
1035         else:
1036             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeOS2WinDescent", value)
1037             if not valid:
1038                 raise ValueError("Invalid value (%s) for attribute openTypeOS2WinDescent." % repr(value))
1039             else:
1040                 self._openTypeOS2WinDescent = value
1041         self.dirty = True
1042
1043     openTypeOS2WinDescent = property(_get_openTypeOS2WinDescent, _set_openTypeOS2WinDescent, doc="Descender value. Corresponds to the OpenType OS/2 table usWinDescent field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1044
1045     def _get_openTypeVheaCaretOffset(self):
1046         return self._openTypeVheaCaretOffset
1047
1048     def _set_openTypeVheaCaretOffset(self, value):
1049         if value is None:
1050             self._openTypeVheaCaretOffset = None
1051         else:
1052             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeVheaCaretOffset", value)
1053             if not valid:
1054                 raise ValueError("Invalid value (%s) for attribute openTypeVheaCaretOffset." % repr(value))
1055             else:
1056                 self._openTypeVheaCaretOffset = value
1057         self.dirty = True
1058
1059     openTypeVheaCaretOffset = property(_get_openTypeVheaCaretOffset, _set_openTypeVheaCaretOffset, doc="Caret offset value. Corresponds to the OpenType vhea table caretOffset field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1060
1061     def _get_openTypeVheaCaretSlopeRise(self):
1062         return self._openTypeVheaCaretSlopeRise
1063
1064     def _set_openTypeVheaCaretSlopeRise(self, value):
1065         if value is None:
1066             self._openTypeVheaCaretSlopeRise = None
1067         else:
1068             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeVheaCaretSlopeRise", value)
1069             if not valid:
1070                 raise ValueError("Invalid value (%s) for attribute openTypeVheaCaretSlopeRise." % repr(value))
1071             else:
1072                 self._openTypeVheaCaretSlopeRise = value
1073         self.dirty = True
1074
1075     openTypeVheaCaretSlopeRise = property(_get_openTypeVheaCaretSlopeRise, _set_openTypeVheaCaretSlopeRise, doc="Caret slope rise value. Corresponds to the OpenType vhea table caretSlopeRise field. This should be a integer. Setting this will post an *Info.Changed* notification.")
1076
1077     def _get_openTypeVheaCaretSlopeRun(self):
1078         return self._openTypeVheaCaretSlopeRun
1079
1080     def _set_openTypeVheaCaretSlopeRun(self, value):
1081         if value is None:
1082             self._openTypeVheaCaretSlopeRun = None
1083         else:
1084             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeVheaCaretSlopeRun", value)
1085             if not valid:
1086                 raise ValueError("Invalid value (%s) for attribute openTypeVheaCaretSlopeRun." % repr(value))
1087             else:
1088                 self._openTypeVheaCaretSlopeRun = value
1089         self.dirty = True
1090
1091     openTypeVheaCaretSlopeRun = property(_get_openTypeVheaCaretSlopeRun, _set_openTypeVheaCaretSlopeRun, doc="Caret slope run value. Corresponds to the OpenType vhea table caretSlopeRun field. This should be a integer. Setting this will post an *Info.Changed* notification.")
1092
1093     def _get_openTypeVheaVertTypoAscender(self):
1094         return self._openTypeVheaVertTypoAscender
1095
1096     def _set_openTypeVheaVertTypoAscender(self, value):
1097         if value is None:
1098             self._openTypeVheaVertTypoAscender = None
1099         else:
1100             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeVheaVertTypoAscender", value)
1101             if not valid:
1102                 raise ValueError("Invalid value (%s) for attribute openTypeVheaVertTypoAscender." % repr(value))
1103             else:
1104                 self._openTypeVheaVertTypoAscender = value
1105         self.dirty = True
1106
1107     openTypeVheaVertTypoAscender = property(_get_openTypeVheaVertTypoAscender, _set_openTypeVheaVertTypoAscender, doc="Ascender value. Corresponds to the OpenType vhea table vertTypoAscender field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1108
1109     def _get_openTypeVheaVertTypoDescender(self):
1110         return self._openTypeVheaVertTypoDescender
1111
1112     def _set_openTypeVheaVertTypoDescender(self, value):
1113         if value is None:
1114             self._openTypeVheaVertTypoDescender = None
1115         else:
1116             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeVheaVertTypoDescender", value)
1117             if not valid:
1118                 raise ValueError("Invalid value (%s) for attribute openTypeVheaVertTypoDescender." % repr(value))
1119             else:
1120                 self._openTypeVheaVertTypoDescender = value
1121         self.dirty = True
1122
1123     openTypeVheaVertTypoDescender = property(_get_openTypeVheaVertTypoDescender, _set_openTypeVheaVertTypoDescender, doc="Descender value. Corresponds to the OpenType vhea table vertTypoDescender field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1124
1125     def _get_openTypeVheaVertTypoLineGap(self):
1126         return self._openTypeVheaVertTypoLineGap
1127
1128     def _set_openTypeVheaVertTypoLineGap(self, value):
1129         if value is None:
1130             self._openTypeVheaVertTypoLineGap = None
1131         else:
1132             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("openTypeVheaVertTypoLineGap", value)
1133             if not valid:
1134                 raise ValueError("Invalid value (%s) for attribute openTypeVheaVertTypoLineGap." % repr(value))
1135             else:
1136                 self._openTypeVheaVertTypoLineGap = value
1137         self.dirty = True
1138
1139     openTypeVheaVertTypoLineGap = property(_get_openTypeVheaVertTypoLineGap, _set_openTypeVheaVertTypoLineGap, doc="Line gap value. Corresponds to the OpenType vhea table vertTypoLineGap field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1140
1141     def _get_postscriptBlueFuzz(self):
1142         return self._postscriptBlueFuzz
1143
1144     def _set_postscriptBlueFuzz(self, value):
1145         if value is None:
1146             self._postscriptBlueFuzz = None
1147         else:
1148             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptBlueFuzz", value)
1149             if not valid:
1150                 raise ValueError("Invalid value (%s) for attribute postscriptBlueFuzz." % repr(value))
1151             else:
1152                 self._postscriptBlueFuzz = value
1153         self.dirty = True
1154
1155     postscriptBlueFuzz = property(_get_postscriptBlueFuzz, _set_postscriptBlueFuzz, doc="BlueFuzz value. This corresponds to the Type 1/CFF BlueFuzz field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1156
1157     def _get_postscriptBlueScale(self):
1158         return self._postscriptBlueScale
1159
1160     def _set_postscriptBlueScale(self, value):
1161         if value is None:
1162             self._postscriptBlueScale = None
1163         else:
1164             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptBlueScale", value)
1165             if not valid:
1166                 raise ValueError("Invalid value (%s) for attribute postscriptBlueScale." % repr(value))
1167             else:
1168                 self._postscriptBlueScale = value
1169         self.dirty = True
1170
1171     postscriptBlueScale = property(_get_postscriptBlueScale, _set_postscriptBlueScale, doc="BlueScale value. This corresponds to the Type 1/CFF BlueScale field. This should be a float. Setting this will post an *Info.Changed* notification.")
1172
1173     def _get_postscriptBlueShift(self):
1174         return self._postscriptBlueShift
1175
1176     def _set_postscriptBlueShift(self, value):
1177         if value is None:
1178             self._postscriptBlueShift = None
1179         else:
1180             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptBlueShift", value)
1181             if not valid:
1182                 raise ValueError("Invalid value (%s) for attribute postscriptBlueShift." % repr(value))
1183             else:
1184                 self._postscriptBlueShift = value
1185         self.dirty = True
1186
1187     postscriptBlueShift = property(_get_postscriptBlueShift, _set_postscriptBlueShift, doc="BlueShift value. This corresponds to the Type 1/CFF BlueShift field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1188
1189     def _get_postscriptBlueValues(self):
1190         if self._postscriptBlueValues is None:
1191             return []
1192         return self._postscriptBlueValues
1193
1194     def _set_postscriptBlueValues(self, value):
1195         if value is None:
1196             self._postscriptBlueValues = None
1197         else:
1198             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptBlueValues", value)
1199             if not valid:
1200                 raise ValueError("Invalid value (%s) for attribute postscriptBlueValues." % repr(value))
1201             else:
1202                 self._postscriptBlueValues = value
1203         self.dirty = True
1204
1205     postscriptBlueValues = property(_get_postscriptBlueValues, _set_postscriptBlueValues, doc="A list of up to 14 integers or floats specifying the values that should be in the Type 1/CFF BlueValues field. This list must contain an even number of integers following the rules defined in the Type 1/CFF specification. This should be a number list. Setting this will post an *Info.Changed* notification.")
1206
1207     def _get_postscriptDefaultCharacter(self):
1208         return self._postscriptDefaultCharacter
1209
1210     def _set_postscriptDefaultCharacter(self, value):
1211         if value is None:
1212             self._postscriptDefaultCharacter = None
1213         else:
1214             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptDefaultCharacter", value)
1215             if not valid:
1216                 raise ValueError("Invalid value (%s) for attribute postscriptDefaultCharacter." % repr(value))
1217             else:
1218                 self._postscriptDefaultCharacter = value
1219         self.dirty = True
1220
1221     postscriptDefaultCharacter = property(_get_postscriptDefaultCharacter, _set_postscriptDefaultCharacter, doc="The name of the glyph that should be used as the default character in PFM files. This should be a string. Setting this will post an *Info.Changed* notification.")
1222
1223     def _get_postscriptDefaultWidthX(self):
1224         return self._postscriptDefaultWidthX
1225
1226     def _set_postscriptDefaultWidthX(self, value):
1227         if value is None:
1228             self._postscriptDefaultWidthX = None
1229         else:
1230             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptDefaultWidthX", value)
1231             if not valid:
1232                 raise ValueError("Invalid value (%s) for attribute postscriptDefaultWidthX." % repr(value))
1233             else:
1234                 self._postscriptDefaultWidthX = value
1235         self.dirty = True
1236
1237     postscriptDefaultWidthX = property(_get_postscriptDefaultWidthX, _set_postscriptDefaultWidthX, doc="Default width for glyphs. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1238
1239     def _get_postscriptFamilyBlues(self):
1240         if self._postscriptFamilyBlues is None:
1241             return []
1242         return self._postscriptFamilyBlues
1243
1244     def _set_postscriptFamilyBlues(self, value):
1245         if value is None:
1246             self._postscriptFamilyBlues = None
1247         else:
1248             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptFamilyBlues", value)
1249             if not valid:
1250                 raise ValueError("Invalid value (%s) for attribute postscriptFamilyBlues." % repr(value))
1251             else:
1252                 self._postscriptFamilyBlues = value
1253         self.dirty = True
1254
1255     postscriptFamilyBlues = property(_get_postscriptFamilyBlues, _set_postscriptFamilyBlues, doc="A list of up to 14 integers or floats specifying the values that should be in the Type 1/CFF FamilyBlues field. This list must contain an even number of integers following the rules defined in the Type 1/CFF specification. This should be a number list. Setting this will post an *Info.Changed* notification.")
1256
1257     def _get_postscriptFamilyOtherBlues(self):
1258         if self._postscriptFamilyOtherBlues is None:
1259             return []
1260         return self._postscriptFamilyOtherBlues
1261
1262     def _set_postscriptFamilyOtherBlues(self, value):
1263         if value is None:
1264             self._postscriptFamilyOtherBlues = None
1265         else:
1266             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptFamilyOtherBlues", value)
1267             if not valid:
1268                 raise ValueError("Invalid value (%s) for attribute postscriptFamilyOtherBlues." % repr(value))
1269             else:
1270                 self._postscriptFamilyOtherBlues = value
1271         self.dirty = True
1272
1273     postscriptFamilyOtherBlues = property(_get_postscriptFamilyOtherBlues, _set_postscriptFamilyOtherBlues, doc="A list of up to 10 integers or floats specifying the values that should be in the Type 1/CFF FamilyOtherBlues field. This list must contain an even number of integers following the rules defined in the Type 1/CFF specification. This should be a number list. Setting this will post an *Info.Changed* notification.")
1274
1275     def _get_postscriptFontName(self):
1276         return self._postscriptFontName
1277
1278     def _set_postscriptFontName(self, value):
1279         if value is None:
1280             self._postscriptFontName = None
1281         else:
1282             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptFontName", value)
1283             if not valid:
1284                 raise ValueError("Invalid value (%s) for attribute postscriptFontName." % repr(value))
1285             else:
1286                 self._postscriptFontName = value
1287         self.dirty = True
1288
1289     postscriptFontName = property(_get_postscriptFontName, _set_postscriptFontName, doc="Name to be used for the FontName field in Type 1/CFF table. This should be a string. Setting this will post an *Info.Changed* notification.")
1290
1291     def _get_postscriptForceBold(self):
1292         return self._postscriptForceBold
1293
1294     def _set_postscriptForceBold(self, value):
1295         if value is None:
1296             self._postscriptForceBold = None
1297         else:
1298             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptForceBold", value)
1299             if not valid:
1300                 raise ValueError("Invalid value (%s) for attribute postscriptForceBold." % repr(value))
1301             else:
1302                 self._postscriptForceBold = value
1303         self.dirty = True
1304
1305     postscriptForceBold = property(_get_postscriptForceBold, _set_postscriptForceBold, doc="Indicates how the Type 1/CFF ForceBold field should be set. This should be a boolean. Setting this will post an *Info.Changed* notification.")
1306
1307     def _get_postscriptFullName(self):
1308         return self._postscriptFullName
1309
1310     def _set_postscriptFullName(self, value):
1311         if value is None:
1312             self._postscriptFullName = None
1313         else:
1314             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptFullName", value)
1315             if not valid:
1316                 raise ValueError("Invalid value (%s) for attribute postscriptFullName." % repr(value))
1317             else:
1318                 self._postscriptFullName = value
1319         self.dirty = True
1320
1321     postscriptFullName = property(_get_postscriptFullName, _set_postscriptFullName, doc="Name to be used for the FullName field in Type 1/CFF table. This should be a string. Setting this will post an *Info.Changed* notification.")
1322
1323     def _get_postscriptIsFixedPitch(self):
1324         return self._postscriptIsFixedPitch
1325
1326     def _set_postscriptIsFixedPitch(self, value):
1327         if value is None:
1328             self._postscriptIsFixedPitch = None
1329         else:
1330             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptIsFixedPitch", value)
1331             if not valid:
1332                 raise ValueError("Invalid value (%s) for attribute postscriptIsFixedPitch." % repr(value))
1333             else:
1334                 self._postscriptIsFixedPitch = value
1335         self.dirty = True
1336
1337     postscriptIsFixedPitch = property(_get_postscriptIsFixedPitch, _set_postscriptIsFixedPitch, doc="Indicates if the font is monospaced. A compiler could calculate this automatically, but the designer may wish to override this setting. This corresponds to the Type 1/CFF isFixedPitched field This should be a boolean. Setting this will post an *Info.Changed* notification.")
1338
1339     def _get_postscriptNominalWidthX(self):
1340         return self._postscriptNominalWidthX
1341
1342     def _set_postscriptNominalWidthX(self, value):
1343         if value is None:
1344             self._postscriptNominalWidthX = None
1345         else:
1346             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptNominalWidthX", value)
1347             if not valid:
1348                 raise ValueError("Invalid value (%s) for attribute postscriptNominalWidthX." % repr(value))
1349             else:
1350                 self._postscriptNominalWidthX = value
1351         self.dirty = True
1352
1353     postscriptNominalWidthX = property(_get_postscriptNominalWidthX, _set_postscriptNominalWidthX, doc="Nominal width for glyphs. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1354
1355     def _get_postscriptOtherBlues(self):
1356         if self._postscriptOtherBlues is None:
1357             return []
1358         return self._postscriptOtherBlues
1359
1360     def _set_postscriptOtherBlues(self, value):
1361         if value is None:
1362             self._postscriptOtherBlues = None
1363         else:
1364             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptOtherBlues", value)
1365             if not valid:
1366                 raise ValueError("Invalid value (%s) for attribute postscriptOtherBlues." % repr(value))
1367             else:
1368                 self._postscriptOtherBlues = value
1369         self.dirty = True
1370
1371     postscriptOtherBlues = property(_get_postscriptOtherBlues, _set_postscriptOtherBlues, doc="A list of up to 10 integers or floats specifying the values that should be in the Type 1/CFF OtherBlues field. This list must contain an even number of integers following the rules defined in the Type 1/CFF specification. This should be a number list. Setting this will post an *Info.Changed* notification.")
1372
1373     def _get_postscriptSlantAngle(self):
1374         return self._postscriptSlantAngle
1375
1376     def _set_postscriptSlantAngle(self, value):
1377         if value is None:
1378             self._postscriptSlantAngle = None
1379         else:
1380             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptSlantAngle", value)
1381             if not valid:
1382                 raise ValueError("Invalid value (%s) for attribute postscriptSlantAngle." % repr(value))
1383             else:
1384                 self._postscriptSlantAngle = value
1385         self.dirty = True
1386
1387     postscriptSlantAngle = property(_get_postscriptSlantAngle, _set_postscriptSlantAngle, doc="Artificial slant angle. This should be a float. Setting this will post an *Info.Changed* notification.")
1388
1389     def _get_postscriptStemSnapH(self):
1390         if self._postscriptStemSnapH is None:
1391             return []
1392         return self._postscriptStemSnapH
1393
1394     def _set_postscriptStemSnapH(self, value):
1395         if value is None:
1396             self._postscriptStemSnapH = None
1397         else:
1398             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptStemSnapH", value)
1399             if not valid:
1400                 raise ValueError("Invalid value (%s) for attribute postscriptStemSnapH." % repr(value))
1401             else:
1402                 self._postscriptStemSnapH = value
1403         self.dirty = True
1404
1405     postscriptStemSnapH = property(_get_postscriptStemSnapH, _set_postscriptStemSnapH, doc="List of horizontal stems sorted in increasing order. Up to 12 integers or floats are possible. This corresponds to the Type 1/CFF StemSnapH field. This should be a number list. Setting this will post an *Info.Changed* notification.")
1406
1407     def _get_postscriptStemSnapV(self):
1408         if self._postscriptStemSnapV is None:
1409             return []
1410         return self._postscriptStemSnapV
1411
1412     def _set_postscriptStemSnapV(self, value):
1413         if value is None:
1414             self._postscriptStemSnapV = None
1415         else:
1416             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptStemSnapV", value)
1417             if not valid:
1418                 raise ValueError("Invalid value (%s) for attribute postscriptStemSnapV." % repr(value))
1419             else:
1420                 self._postscriptStemSnapV = value
1421         self.dirty = True
1422
1423     postscriptStemSnapV = property(_get_postscriptStemSnapV, _set_postscriptStemSnapV, doc="List of vertical stems sorted in increasing order. Up to 12 integers or floats are possible. This corresponds to the Type 1/CFF StemSnapV field. This should be a number list. Setting this will post an *Info.Changed* notification.")
1424
1425     def _get_postscriptUnderlinePosition(self):
1426         return self._postscriptUnderlinePosition
1427
1428     def _set_postscriptUnderlinePosition(self, value):
1429         if value is None:
1430             self._postscriptUnderlinePosition = None
1431         else:
1432             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptUnderlinePosition", value)
1433             if not valid:
1434                 raise ValueError("Invalid value (%s) for attribute postscriptUnderlinePosition." % repr(value))
1435             else:
1436                 self._postscriptUnderlinePosition = value
1437         self.dirty = True
1438
1439     postscriptUnderlinePosition = property(_get_postscriptUnderlinePosition, _set_postscriptUnderlinePosition, doc="Underline position value. Corresponds to the Type 1/CFF/post table UnderlinePosition field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1440
1441     def _get_postscriptUnderlineThickness(self):
1442         return self._postscriptUnderlineThickness
1443
1444     def _set_postscriptUnderlineThickness(self, value):
1445         if value is None:
1446             self._postscriptUnderlineThickness = None
1447         else:
1448             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptUnderlineThickness", value)
1449             if not valid:
1450                 raise ValueError("Invalid value (%s) for attribute postscriptUnderlineThickness." % repr(value))
1451             else:
1452                 self._postscriptUnderlineThickness = value
1453         self.dirty = True
1454
1455     postscriptUnderlineThickness = property(_get_postscriptUnderlineThickness, _set_postscriptUnderlineThickness, doc="Underline thickness value. Corresponds to the Type 1/CFF/post table UnderlineThickness field. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1456
1457     def _get_postscriptUniqueID(self):
1458         return self._postscriptUniqueID
1459
1460     def _set_postscriptUniqueID(self, value):
1461         if value is None:
1462             self._postscriptUniqueID = None
1463         else:
1464             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptUniqueID", value)
1465             if not valid:
1466                 raise ValueError("Invalid value (%s) for attribute postscriptUniqueID." % repr(value))
1467             else:
1468                 self._postscriptUniqueID = value
1469         self.dirty = True
1470
1471     postscriptUniqueID = property(_get_postscriptUniqueID, _set_postscriptUniqueID, doc="A unique ID number as defined in the Type 1/CFF specification. This should be a integer. Setting this will post an *Info.Changed* notification.")
1472
1473     def _get_postscriptWeightName(self):
1474         return self._postscriptWeightName
1475
1476     def _set_postscriptWeightName(self, value):
1477         if value is None:
1478             self._postscriptWeightName = None
1479         else:
1480             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptWeightName", value)
1481             if not valid:
1482                 raise ValueError("Invalid value (%s) for attribute postscriptWeightName." % repr(value))
1483             else:
1484                 self._postscriptWeightName = value
1485         self.dirty = True
1486
1487     postscriptWeightName = property(_get_postscriptWeightName, _set_postscriptWeightName, doc="A string indicating the overall weight of the font. This corresponds to the Type 1/CFF Weight field. It should be in sync with the openTypeOS2WeightClass value. This should be a string. Setting this will post an *Info.Changed* notification.")
1488
1489     def _get_postscriptWindowsCharacterSet(self):
1490         return self._postscriptWindowsCharacterSet
1491
1492     def _set_postscriptWindowsCharacterSet(self, value):
1493         if value is None:
1494             self._postscriptWindowsCharacterSet = None
1495         else:
1496             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("postscriptWindowsCharacterSet", value)
1497             if not valid:
1498                 raise ValueError("Invalid value (%s) for attribute postscriptWindowsCharacterSet." % repr(value))
1499             else:
1500                 self._postscriptWindowsCharacterSet = value
1501         self.dirty = True
1502
1503     postscriptWindowsCharacterSet = property(_get_postscriptWindowsCharacterSet, _set_postscriptWindowsCharacterSet, doc="The Windows character set. The values are defined below. This should be a integer. Setting this will post an *Info.Changed* notification.")
1504
1505     def _get_styleMapFamilyName(self):
1506         return self._styleMapFamilyName
1507
1508     def _set_styleMapFamilyName(self, value):
1509         if value is None:
1510             self._styleMapFamilyName = None
1511         else:
1512             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("styleMapFamilyName", value)
1513             if not valid:
1514                 raise ValueError("Invalid value (%s) for attribute styleMapFamilyName." % repr(value))
1515             else:
1516                 self._styleMapFamilyName = value
1517         self.dirty = True
1518
1519     styleMapFamilyName = property(_get_styleMapFamilyName, _set_styleMapFamilyName, doc="Family name used for bold, italic and bold italic style mapping. This should be a string. Setting this will post an *Info.Changed* notification.")
1520
1521     def _get_styleMapStyleName(self):
1522         return self._styleMapStyleName
1523
1524     def _set_styleMapStyleName(self, value):
1525         if value is None:
1526             self._styleMapStyleName = None
1527         else:
1528             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("styleMapStyleName", value)
1529             if not valid:
1530                 raise ValueError("Invalid value (%s) for attribute styleMapStyleName." % repr(value))
1531             else:
1532                 self._styleMapStyleName = value
1533         self.dirty = True
1534
1535     styleMapStyleName = property(_get_styleMapStyleName, _set_styleMapStyleName, doc="Style map style. The possible values are regular, italic, bold and bold italic. These are case sensitive. This should be a string. Setting this will post an *Info.Changed* notification.")
1536
1537     def _get_styleName(self):
1538         return self._styleName
1539
1540     def _set_styleName(self, value):
1541         if value is None:
1542             self._styleName = None
1543         else:
1544             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("styleName", value)
1545             if not valid:
1546                 raise ValueError("Invalid value (%s) for attribute styleName." % repr(value))
1547             else:
1548                 self._styleName = value
1549         self.dirty = True
1550
1551     styleName = property(_get_styleName, _set_styleName, doc="Style name. This should be a string. Setting this will post an *Info.Changed* notification.")
1552
1553     def _get_trademark(self):
1554         return self._trademark
1555
1556     def _set_trademark(self, value):
1557         if value is None:
1558             self._trademark = None
1559         else:
1560             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("trademark", value)
1561             if not valid:
1562                 raise ValueError("Invalid value (%s) for attribute trademark." % repr(value))
1563             else:
1564                 self._trademark = value
1565         self.dirty = True
1566
1567     trademark = property(_get_trademark, _set_trademark, doc="Trademark statement. This should be a string. Setting this will post an *Info.Changed* notification.")
1568
1569     def _get_unitsPerEm(self):
1570         return self._unitsPerEm
1571
1572     def _set_unitsPerEm(self, value):
1573         if value is None:
1574             self._unitsPerEm = None
1575         else:
1576             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("unitsPerEm", value)
1577             if not valid:
1578                 raise ValueError("Invalid value (%s) for attribute unitsPerEm." % repr(value))
1579             else:
1580                 self._unitsPerEm = value
1581         self.dirty = True
1582
1583     unitsPerEm = property(_get_unitsPerEm, _set_unitsPerEm, doc="Units per em. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1584
1585     def _get_versionMajor(self):
1586         return self._versionMajor
1587
1588     def _set_versionMajor(self, value):
1589         if value is None:
1590             self._versionMajor = None
1591         else:
1592             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("versionMajor", value)
1593             if not valid:
1594                 raise ValueError("Invalid value (%s) for attribute versionMajor." % repr(value))
1595             else:
1596                 self._versionMajor = value
1597         self.dirty = True
1598
1599     versionMajor = property(_get_versionMajor, _set_versionMajor, doc="Major version. This should be a integer. Setting this will post an *Info.Changed* notification.")
1600
1601     def _get_versionMinor(self):
1602         return self._versionMinor
1603
1604     def _set_versionMinor(self, value):
1605         if value is None:
1606             self._versionMinor = None
1607         else:
1608             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("versionMinor", value)
1609             if not valid:
1610                 raise ValueError("Invalid value (%s) for attribute versionMinor." % repr(value))
1611             else:
1612                 self._versionMinor = value
1613         self.dirty = True
1614
1615     versionMinor = property(_get_versionMinor, _set_versionMinor, doc="Minor version. This should be a integer. Setting this will post an *Info.Changed* notification.")
1616
1617     def _get_xHeight(self):
1618         return self._xHeight
1619
1620     def _set_xHeight(self, value):
1621         if value is None:
1622             self._xHeight = None
1623         else:
1624             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("xHeight", value)
1625             if not valid:
1626                 raise ValueError("Invalid value (%s) for attribute xHeight." % repr(value))
1627             else:
1628                 self._xHeight = value
1629         self.dirty = True
1630
1631     xHeight = property(_get_xHeight, _set_xHeight, doc="x-height value. This should be a integer or float. Setting this will post an *Info.Changed* notification.")
1632
1633     def _get_year(self):
1634         return self._year
1635
1636     def _set_year(self, value):
1637         if value is None:
1638             self._year = None
1639         else:
1640             valid = ufoLib.validateFontInfoVersion2ValueForAttribute("year", value)
1641             if not valid:
1642                 raise ValueError("Invalid value (%s) for attribute year." % repr(value))
1643             else:
1644                 self._year = value
1645         self.dirty = True
1646
1647     year = property(_get_year, _set_year, doc="The year the font was created. This attribute is deprecated as of version 2. It's presence should not be relied upon by applications. However, it may occur in a font's info so applications should preserve it if present. This should be a integer. Setting this will post an *Info.Changed* notification.")
1648
1649     # ---------------------
1650     # Deprecated Attributes
1651     # ---------------------
1652
1653     def _get_createdBy(self):
1654         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("createdBy", None)
1655         warn("The attribute createdBy has been deprecated.")
1656         return getattr(self, newAttr)
1657
1658     def _set_createdBy(self, value):
1659         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("createdBy", value)
1660         warn("The attribute createdBy has been deprecated.")
1661         setattr(self, newAttr, newValue)
1662
1663     createdBy = property(_get_createdBy, _set_createdBy)
1664
1665     def _get_defaultWidth(self):
1666         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("defaultWidth", None)
1667         warn("The attribute defaultWidth has been deprecated.")
1668         return getattr(self, newAttr)
1669
1670     def _set_defaultWidth(self, value):
1671         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("defaultWidth", value)
1672         warn("The attribute defaultWidth has been deprecated.")
1673         setattr(self, newAttr, newValue)
1674
1675     defaultWidth = property(_get_defaultWidth, _set_defaultWidth)
1676
1677     def _get_designer(self):
1678         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("designer", None)
1679         warn("The attribute designer has been deprecated.")
1680         return getattr(self, newAttr)
1681
1682     def _set_designer(self, value):
1683         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("designer", value)
1684         warn("The attribute designer has been deprecated.")
1685         setattr(self, newAttr, newValue)
1686
1687     designer = property(_get_designer, _set_designer)
1688
1689     def _get_designerURL(self):
1690         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("designerURL", None)
1691         warn("The attribute designerURL has been deprecated.")
1692         return getattr(self, newAttr)
1693
1694     def _set_designerURL(self, value):
1695         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("designerURL", value)
1696         warn("The attribute designerURL has been deprecated.")
1697         setattr(self, newAttr, newValue)
1698
1699     designerURL = property(_get_designerURL, _set_designerURL)
1700
1701     def _get_fondID(self):
1702         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fondID", None)
1703         warn("The attribute fondID has been deprecated.")
1704         return getattr(self, newAttr)
1705
1706     def _set_fondID(self, value):
1707         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fondID", value)
1708         warn("The attribute fondID has been deprecated.")
1709         setattr(self, newAttr, newValue)
1710
1711     fondID = property(_get_fondID, _set_fondID)
1712
1713     def _get_fondName(self):
1714         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fondName", None)
1715         warn("The attribute fondName has been deprecated.")
1716         return getattr(self, newAttr)
1717
1718     def _set_fondName(self, value):
1719         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fondName", value)
1720         warn("The attribute fondName has been deprecated.")
1721         setattr(self, newAttr, newValue)
1722
1723     fondName = property(_get_fondName, _set_fondName)
1724
1725     def _get_fontName(self):
1726         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fontName", None)
1727         warn("The attribute fontName has been deprecated.")
1728         return getattr(self, newAttr)
1729
1730     def _set_fontName(self, value):
1731         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fontName", value)
1732         warn("The attribute fontName has been deprecated.")
1733         setattr(self, newAttr, newValue)
1734
1735     fontName = property(_get_fontName, _set_fontName)
1736
1737     def _get_fontStyle(self):
1738         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fontStyle", None)
1739         warn("The attribute fontStyle has been deprecated.")
1740         return getattr(self, newAttr)
1741
1742     def _set_fontStyle(self, value):
1743         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fontStyle", value)
1744         warn("The attribute fontStyle has been deprecated.")
1745         setattr(self, newAttr, newValue)
1746
1747     fontStyle = property(_get_fontStyle, _set_fontStyle)
1748
1749     def _get_fullName(self):
1750         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fullName", None)
1751         warn("The attribute fullName has been deprecated.")
1752         return getattr(self, newAttr)
1753
1754     def _set_fullName(self, value):
1755         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("fullName", value)
1756         warn("The attribute fullName has been deprecated.")
1757         setattr(self, newAttr, newValue)
1758
1759     fullName = property(_get_fullName, _set_fullName)
1760
1761     def _get_license(self):
1762         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("license", None)
1763         warn("The attribute license has been deprecated.")
1764         return getattr(self, newAttr)
1765
1766     def _set_license(self, value):
1767         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("license", value)
1768         warn("The attribute license has been deprecated.")
1769         setattr(self, newAttr, newValue)
1770
1771     license = property(_get_license, _set_license)
1772
1773     def _get_licenseURL(self):
1774         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("licenseURL", None)
1775         warn("The attribute licenseURL has been deprecated.")
1776         return getattr(self, newAttr)
1777
1778     def _set_licenseURL(self, value):
1779         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("licenseURL", value)
1780         warn("The attribute licenseURL has been deprecated.")
1781         setattr(self, newAttr, newValue)
1782
1783     licenseURL = property(_get_licenseURL, _set_licenseURL)
1784
1785     def _get_menuName(self):
1786         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("menuName", None)
1787         warn("The attribute menuName has been deprecated.")
1788         return getattr(self, newAttr)
1789
1790     def _set_menuName(self, value):
1791         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("menuName", value)
1792         warn("The attribute menuName has been deprecated.")
1793         setattr(self, newAttr, newValue)
1794
1795     menuName = property(_get_menuName, _set_menuName)
1796
1797     def _get_msCharSet(self):
1798         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("msCharSet", None)
1799         warn("The attribute msCharSet has been deprecated.")
1800         return getattr(self, newAttr)
1801
1802     def _set_msCharSet(self, value):
1803         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("msCharSet", value)
1804         warn("The attribute msCharSet has been deprecated.")
1805         setattr(self, newAttr, newValue)
1806
1807     msCharSet = property(_get_msCharSet, _set_msCharSet)
1808
1809     def _get_notice(self):
1810         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("notice", None)
1811         warn("The attribute notice has been deprecated.")
1812         return getattr(self, newAttr)
1813
1814     def _set_notice(self, value):
1815         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("notice", value)
1816         warn("The attribute notice has been deprecated.")
1817         setattr(self, newAttr, newValue)
1818
1819     notice = property(_get_notice, _set_notice)
1820
1821     def _get_otFamilyName(self):
1822         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("otFamilyName", None)
1823         warn("The attribute otFamilyName has been deprecated.")
1824         return getattr(self, newAttr)
1825
1826     def _set_otFamilyName(self, value):
1827         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("otFamilyName", value)
1828         warn("The attribute otFamilyName has been deprecated.")
1829         setattr(self, newAttr, newValue)
1830
1831     otFamilyName = property(_get_otFamilyName, _set_otFamilyName)
1832
1833     def _get_otMacName(self):
1834         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("otMacName", None)
1835         warn("The attribute otMacName has been deprecated.")
1836         return getattr(self, newAttr)
1837
1838     def _set_otMacName(self, value):
1839         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("otMacName", value)
1840         warn("The attribute otMacName has been deprecated.")
1841         setattr(self, newAttr, newValue)
1842
1843     otMacName = property(_get_otMacName, _set_otMacName)
1844
1845     def _get_otStyleName(self):
1846         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("otStyleName", None)
1847         warn("The attribute otStyleName has been deprecated.")
1848         return getattr(self, newAttr)
1849
1850     def _set_otStyleName(self, value):
1851         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("otStyleName", value)
1852         warn("The attribute otStyleName has been deprecated.")
1853         setattr(self, newAttr, newValue)
1854
1855     otStyleName = property(_get_otStyleName, _set_otStyleName)
1856
1857     def _get_slantAngle(self):
1858         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("slantAngle", None)
1859         warn("The attribute slantAngle has been deprecated.")
1860         return getattr(self, newAttr)
1861
1862     def _set_slantAngle(self, value):
1863         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("slantAngle", value)
1864         warn("The attribute slantAngle has been deprecated.")
1865         setattr(self, newAttr, newValue)
1866
1867     slantAngle = property(_get_slantAngle, _set_slantAngle)
1868
1869     def _get_ttUniqueID(self):
1870         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("ttUniqueID", None)
1871         warn("The attribute ttUniqueID has been deprecated.")
1872         return getattr(self, newAttr)
1873
1874     def _set_ttUniqueID(self, value):
1875         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("ttUniqueID", value)
1876         warn("The attribute ttUniqueID has been deprecated.")
1877         setattr(self, newAttr, newValue)
1878
1879     ttUniqueID = property(_get_ttUniqueID, _set_ttUniqueID)
1880
1881     def _get_ttVendor(self):
1882         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("ttVendor", None)
1883         warn("The attribute ttVendor has been deprecated.")
1884         return getattr(self, newAttr)
1885
1886     def _set_ttVendor(self, value):
1887         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("ttVendor", value)
1888         warn("The attribute ttVendor has been deprecated.")
1889         setattr(self, newAttr, newValue)
1890
1891     ttVendor = property(_get_ttVendor, _set_ttVendor)
1892
1893     def _get_ttVersion(self):
1894         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("ttVersion", None)
1895         warn("The attribute ttVersion has been deprecated.")
1896         return getattr(self, newAttr)
1897
1898     def _set_ttVersion(self, value):
1899         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("ttVersion", value)
1900         warn("The attribute ttVersion has been deprecated.")
1901         setattr(self, newAttr, newValue)
1902
1903     ttVersion = property(_get_ttVersion, _set_ttVersion)
1904
1905     def _get_uniqueID(self):
1906         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("uniqueID", None)
1907         warn("The attribute uniqueID has been deprecated.")
1908         return getattr(self, newAttr)
1909
1910     def _set_uniqueID(self, value):
1911         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("uniqueID", value)
1912         warn("The attribute uniqueID has been deprecated.")
1913         setattr(self, newAttr, newValue)
1914
1915     uniqueID = property(_get_uniqueID, _set_uniqueID)
1916
1917     def _get_vendorURL(self):
1918         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("vendorURL", None)
1919         warn("The attribute vendorURL has been deprecated.")
1920         return getattr(self, newAttr)
1921
1922     def _set_vendorURL(self, value):
1923         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("vendorURL", value)
1924         warn("The attribute vendorURL has been deprecated.")
1925         setattr(self, newAttr, newValue)
1926
1927     vendorURL = property(_get_vendorURL, _set_vendorURL)
1928
1929     def _get_weightName(self):
1930         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("weightName", None)
1931         warn("The attribute weightName has been deprecated.")
1932         return getattr(self, newAttr)
1933
1934     def _set_weightName(self, value):
1935         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("weightName", value)
1936         warn("The attribute weightName has been deprecated.")
1937         setattr(self, newAttr, newValue)
1938
1939     weightName = property(_get_weightName, _set_weightName)
1940
1941     def _get_weightValue(self):
1942         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("weightValue", None)
1943         warn("The attribute weightValue has been deprecated.")
1944         return getattr(self, newAttr)
1945
1946     def _set_weightValue(self, value):
1947         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("weightValue", value)
1948         warn("The attribute weightValue has been deprecated.")
1949         setattr(self, newAttr, newValue)
1950
1951     weightValue = property(_get_weightValue, _set_weightValue)
1952
1953     def _get_widthName(self):
1954         newAttr, n = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("widthName", None)
1955         warn("The attribute widthName has been deprecated.")
1956         return getattr(self, newAttr)
1957
1958     def _set_widthName(self, value):
1959         newAttr, newValue = ufoLib.convertFontInfoValueForAttributeFromVersion1ToVersion2("widthName", value)
1960         warn("The attribute widthName has been deprecated.")
1961         setattr(self, newAttr, newValue)
1962
1963     widthName = property(_get_widthName, _set_widthName)
1964
1965     # ----
1966     # Undo
1967     # ----
1968
1969     def getDataToSerializeForUndo(self):
1970         data = dict.fromkeys(ufoLib.fontInfoAttributesVersion2)
1971         for attr in data.keys():
1972             data[attr] = getattr(self, attr)
1973         return data
1974
1975     def loadDeserializedDataFromUndo(self, data):
1976         for attr, value in data.items():
1977             if getattr(self, attr) == value:
1978                 continue
1979             setattr(self, attr, value)
1980
Note: See TracBrowser for help on using the browser.