普通文本  |  673行  |  23.93 KB

"""Miscellaneous helpers for our test suite."""

from __future__ import absolute_import, unicode_literals
import os
from fontTools.ufoLib.utils import numberTypes

try:
	basestring
except NameError:
	basestring = str

def getDemoFontPath():
	"""Return the path to Data/DemoFont.ufo/."""
	testdata = os.path.join(os.path.dirname(__file__), "testdata")
	return os.path.join(testdata, "DemoFont.ufo")


def getDemoFontGlyphSetPath():
	"""Return the path to Data/DemoFont.ufo/glyphs/."""
	return os.path.join(getDemoFontPath(), "glyphs")


# GLIF test tools

class Glyph(object):

	def __init__(self):
		self.name = None
		self.width = None
		self.height = None
		self.unicodes = None
		self.note = None
		self.lib = None
		self.image = None
		self.guidelines = None
		self.anchors = None
		self.outline = []

	def _writePointPenCommand(self, command, args, kwargs):
		args = _listToString(args)
		kwargs = _dictToString(kwargs)
		if args and kwargs:
			return "pointPen.%s(*%s, **%s)" % (command, args, kwargs)
		elif len(args):
			return "pointPen.%s(*%s)" % (command, args)
		elif len(kwargs):
			return "pointPen.%s(**%s)" % (command, kwargs)
		else:
			return "pointPen.%s()" % command

	def beginPath(self, **kwargs):
		self.outline.append(self._writePointPenCommand("beginPath", [], kwargs))

	def endPath(self):
		self.outline.append(self._writePointPenCommand("endPath", [], {}))

	def addPoint(self, *args, **kwargs):
		self.outline.append(self._writePointPenCommand("addPoint", args, kwargs))

	def addComponent(self, *args, **kwargs):
		self.outline.append(self._writePointPenCommand("addComponent", args, kwargs))

	def drawPoints(self, pointPen):
		if self.outline:
			py = "\n".join(self.outline)
			exec(py, {"pointPen" : pointPen})

	def py(self):
		text = []
		if self.name is not None:
			text.append("glyph.name = \"%s\"" % self.name)
		if self.width:
			text.append("glyph.width = %r" % self.width)
		if self.height:
			text.append("glyph.height = %r" % self.height)
		if self.unicodes is not None:
			text.append("glyph.unicodes = [%s]" % ", ".join([str(i) for i in self.unicodes]))
		if self.note is not None:
			text.append("glyph.note = \"%s\"" % self.note)
		if self.lib is not None:
			text.append("glyph.lib = %s" % _dictToString(self.lib))
		if self.image is not None:
			text.append("glyph.image = %s" % _dictToString(self.image))
		if self.guidelines is not None:
			text.append("glyph.guidelines = %s" % _listToString(self.guidelines))
		if self.anchors is not None:
			text.append("glyph.anchors = %s" % _listToString(self.anchors))
		if self.outline:
			text += self.outline
		return "\n".join(text)

def _dictToString(d):
	text = []
	for key, value in sorted(d.items()):
		if value is None:
			continue
		key = "\"%s\"" % key
		if isinstance(value, dict):
			value = _dictToString(value)
		elif isinstance(value, list):
			value = _listToString(value)
		elif isinstance(value, tuple):
			value = _tupleToString(value)
		elif isinstance(value, numberTypes):
			value = repr(value)
		elif isinstance(value, basestring):
			value = "\"%s\"" % value
		text.append("%s : %s" % (key, value))
	if not text:
		return ""
	return "{%s}" % ", ".join(text)

def _listToString(l):
	text = []
	for value in l:
		if isinstance(value, dict):
			value = _dictToString(value)
		elif isinstance(value, list):
			value = _listToString(value)
		elif isinstance(value, tuple):
			value = _tupleToString(value)
		elif isinstance(value, numberTypes):
			value = repr(value)
		elif isinstance(value, basestring):
			value = "\"%s\"" % value
		text.append(value)
	if not text:
		return ""
	return "[%s]" % ", ".join(text)

def _tupleToString(t):
	text = []
	for value in t:
		if isinstance(value, dict):
			value = _dictToString(value)
		elif isinstance(value, list):
			value = _listToString(value)
		elif isinstance(value, tuple):
			value = _tupleToString(value)
		elif isinstance(value, numberTypes):
			value = repr(value)
		elif isinstance(value, basestring):
			value = "\"%s\"" % value
		text.append(value)
	if not text:
		return ""
	return "(%s)" % ", ".join(text)

def stripText(text):
	new = []
	for line in text.strip().splitlines():
		line = line.strip()
		if not line:
			continue
		new.append(line)
	return "\n".join(new)

# font info values used by several tests

fontInfoVersion1 = {
	"familyName"   : "Some Font (Family Name)",
	"styleName"	   : "Regular (Style Name)",
	"fullName"	   : "Some Font-Regular (Postscript Full Name)",
	"fontName"	   : "SomeFont-Regular (Postscript Font Name)",
	"menuName"	   : "Some Font Regular (Style Map Family Name)",
	"fontStyle"	   : 64,
	"note"		   : "A note.",
	"versionMajor" : 1,
	"versionMinor" : 0,
	"year"		   : 2008,
	"copyright"	   : "Copyright Some Foundry.",
	"notice"	   : "Some Font by Some Designer for Some Foundry.",
	"trademark"	   : "Trademark Some Foundry",
	"license"	   : "License info for Some Foundry.",
	"licenseURL"   : "http://somefoundry.com/license",
	"createdBy"	   : "Some Foundry",
	"designer"	   : "Some Designer",
	"designerURL"  : "http://somedesigner.com",
	"vendorURL"	   : "http://somefoundry.com",
	"unitsPerEm"   : 1000,
	"ascender"	   : 750,
	"descender"	   : -250,
	"capHeight"	   : 750,
	"xHeight"	   : 500,
	"defaultWidth" : 400,
	"slantAngle"   : -12.5,
	"italicAngle"  : -12.5,
	"widthName"	   : "Medium (normal)",
	"weightName"   : "Medium",
	"weightValue"  : 500,
	"fondName"	   : "SomeFont Regular (FOND Name)",
	"otFamilyName" : "Some Font (Preferred Family Name)",
	"otStyleName"  : "Regular (Preferred Subfamily Name)",
	"otMacName"	   : "Some Font Regular (Compatible Full Name)",
	"msCharSet"	   : 0,
	"fondID"	   : 15000,
	"uniqueID"	   : 4000000,
	"ttVendor"	   : "SOME",
	"ttUniqueID"   : "OpenType name Table Unique ID",
	"ttVersion"	   : "OpenType name Table Version",
}

fontInfoVersion2 = {
	"familyName"						 : "Some Font (Family Name)",
	"styleName"							 : "Regular (Style Name)",
	"styleMapFamilyName"				 : "Some Font Regular (Style Map Family Name)",
	"styleMapStyleName"					 : "regular",
	"versionMajor"						 : 1,
	"versionMinor"						 : 0,
	"year"								 : 2008,
	"copyright"							 : "Copyright Some Foundry.",
	"trademark"							 : "Trademark Some Foundry",
	"unitsPerEm"						 : 1000,
	"descender"							 : -250,
	"xHeight"							 : 500,
	"capHeight"							 : 750,
	"ascender"							 : 750,
	"italicAngle"						 : -12.5,
	"note"								 : "A note.",
	"openTypeHeadCreated"				 : "2000/01/01 00:00:00",
	"openTypeHeadLowestRecPPEM"			 : 10,
	"openTypeHeadFlags"					 : [0, 1],
	"openTypeHheaAscender"				 : 750,
	"openTypeHheaDescender"				 : -250,
	"openTypeHheaLineGap"				 : 200,
	"openTypeHheaCaretSlopeRise"		 : 1,
	"openTypeHheaCaretSlopeRun"			 : 0,
	"openTypeHheaCaretOffset"			 : 0,
	"openTypeNameDesigner"				 : "Some Designer",
	"openTypeNameDesignerURL"			 : "http://somedesigner.com",
	"openTypeNameManufacturer"			 : "Some Foundry",
	"openTypeNameManufacturerURL"		 : "http://somefoundry.com",
	"openTypeNameLicense"				 : "License info for Some Foundry.",
	"openTypeNameLicenseURL"			 : "http://somefoundry.com/license",
	"openTypeNameVersion"				 : "OpenType name Table Version",
	"openTypeNameUniqueID"				 : "OpenType name Table Unique ID",
	"openTypeNameDescription"			 : "Some Font by Some Designer for Some Foundry.",
	"openTypeNamePreferredFamilyName"	 : "Some Font (Preferred Family Name)",
	"openTypeNamePreferredSubfamilyName" : "Regular (Preferred Subfamily Name)",
	"openTypeNameCompatibleFullName"	 : "Some Font Regular (Compatible Full Name)",
	"openTypeNameSampleText"			 : "Sample Text for Some Font.",
	"openTypeNameWWSFamilyName"			 : "Some Font (WWS Family Name)",
	"openTypeNameWWSSubfamilyName"		 : "Regular (WWS Subfamily Name)",
	"openTypeOS2WidthClass"				 : 5,
	"openTypeOS2WeightClass"			 : 500,
	"openTypeOS2Selection"				 : [3],
	"openTypeOS2VendorID"				 : "SOME",
	"openTypeOS2Panose"					 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
	"openTypeOS2FamilyClass"			 : [1, 1],
	"openTypeOS2UnicodeRanges"			 : [0, 1],
	"openTypeOS2CodePageRanges"			 : [0, 1],
	"openTypeOS2TypoAscender"			 : 750,
	"openTypeOS2TypoDescender"			 : -250,
	"openTypeOS2TypoLineGap"			 : 200,
	"openTypeOS2WinAscent"				 : 750,
	"openTypeOS2WinDescent"				 : 250,
	"openTypeOS2Type"					 : [],
	"openTypeOS2SubscriptXSize"			 : 200,
	"openTypeOS2SubscriptYSize"			 : 400,
	"openTypeOS2SubscriptXOffset"		 : 0,
	"openTypeOS2SubscriptYOffset"		 : -100,
	"openTypeOS2SuperscriptXSize"		 : 200,
	"openTypeOS2SuperscriptYSize"		 : 400,
	"openTypeOS2SuperscriptXOffset"		 : 0,
	"openTypeOS2SuperscriptYOffset"		 : 200,
	"openTypeOS2StrikeoutSize"			 : 20,
	"openTypeOS2StrikeoutPosition"		 : 300,
	"openTypeVheaVertTypoAscender"		 : 750,
	"openTypeVheaVertTypoDescender"		 : -250,
	"openTypeVheaVertTypoLineGap"		 : 200,
	"openTypeVheaCaretSlopeRise"		 : 0,
	"openTypeVheaCaretSlopeRun"			 : 1,
	"openTypeVheaCaretOffset"			 : 0,
	"postscriptFontName"				 : "SomeFont-Regular (Postscript Font Name)",
	"postscriptFullName"				 : "Some Font-Regular (Postscript Full Name)",
	"postscriptSlantAngle"				 : -12.5,
	"postscriptUniqueID"				 : 4000000,
	"postscriptUnderlineThickness"		 : 20,
	"postscriptUnderlinePosition"		 : -200,
	"postscriptIsFixedPitch"			 : False,
	"postscriptBlueValues"				 : [500, 510],
	"postscriptOtherBlues"				 : [-250, -260],
	"postscriptFamilyBlues"				 : [500, 510],
	"postscriptFamilyOtherBlues"		 : [-250, -260],
	"postscriptStemSnapH"				 : [100, 120],
	"postscriptStemSnapV"				 : [80, 90],
	"postscriptBlueFuzz"				 : 1,
	"postscriptBlueShift"				 : 7,
	"postscriptBlueScale"				 : 0.039625,
	"postscriptForceBold"				 : True,
	"postscriptDefaultWidthX"			 : 400,
	"postscriptNominalWidthX"			 : 400,
	"postscriptWeightName"				 : "Medium",
	"postscriptDefaultCharacter"		 : ".notdef",
	"postscriptWindowsCharacterSet"		 : 1,
	"macintoshFONDFamilyID"				 : 15000,
	"macintoshFONDName"					 : "SomeFont Regular (FOND Name)",
}

fontInfoVersion3 = {
	"familyName"						 : "Some Font (Family Name)",
	"styleName"							 : "Regular (Style Name)",
	"styleMapFamilyName"				 : "Some Font Regular (Style Map Family Name)",
	"styleMapStyleName"					 : "regular",
	"versionMajor"						 : 1,
	"versionMinor"						 : 0,
	"year"								 : 2008,
	"copyright"							 : "Copyright Some Foundry.",
	"trademark"							 : "Trademark Some Foundry",
	"unitsPerEm"						 : 1000,
	"descender"							 : -250,
	"xHeight"							 : 500,
	"capHeight"							 : 750,
	"ascender"							 : 750,
	"italicAngle"						 : -12.5,
	"note"								 : "A note.",
	"openTypeGaspRangeRecords"			 : [
		dict(rangeMaxPPEM=10, rangeGaspBehavior=[0]),
		dict(rangeMaxPPEM=20, rangeGaspBehavior=[1]),
		dict(rangeMaxPPEM=30, rangeGaspBehavior=[2]),
		dict(rangeMaxPPEM=40, rangeGaspBehavior=[3]),
		dict(rangeMaxPPEM=50, rangeGaspBehavior=[0, 1, 2, 3]),
		dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0])
	],
	"openTypeHeadCreated"				 : "2000/01/01 00:00:00",
	"openTypeHeadLowestRecPPEM"			 : 10,
	"openTypeHeadFlags"					 : [0, 1],
	"openTypeHheaAscender"				 : 750,
	"openTypeHheaDescender"				 : -250,
	"openTypeHheaLineGap"				 : 200,
	"openTypeHheaCaretSlopeRise"		 : 1,
	"openTypeHheaCaretSlopeRun"			 : 0,
	"openTypeHheaCaretOffset"			 : 0,
	"openTypeNameDesigner"				 : "Some Designer",
	"openTypeNameDesignerURL"			 : "http://somedesigner.com",
	"openTypeNameManufacturer"			 : "Some Foundry",
	"openTypeNameManufacturerURL"		 : "http://somefoundry.com",
	"openTypeNameLicense"				 : "License info for Some Foundry.",
	"openTypeNameLicenseURL"			 : "http://somefoundry.com/license",
	"openTypeNameVersion"				 : "OpenType name Table Version",
	"openTypeNameUniqueID"				 : "OpenType name Table Unique ID",
	"openTypeNameDescription"			 : "Some Font by Some Designer for Some Foundry.",
	"openTypeNamePreferredFamilyName"	 : "Some Font (Preferred Family Name)",
	"openTypeNamePreferredSubfamilyName" : "Regular (Preferred Subfamily Name)",
	"openTypeNameCompatibleFullName"	 : "Some Font Regular (Compatible Full Name)",
	"openTypeNameSampleText"			 : "Sample Text for Some Font.",
	"openTypeNameWWSFamilyName"			 : "Some Font (WWS Family Name)",
	"openTypeNameWWSSubfamilyName"		 : "Regular (WWS Subfamily Name)",
	"openTypeNameRecords"				 : [
		dict(nameID=1, platformID=1, encodingID=1, languageID=1, string="Name Record."),
		dict(nameID=2, platformID=1, encodingID=1, languageID=1, string="Name Record.")
	],
	"openTypeOS2WidthClass"				 : 5,
	"openTypeOS2WeightClass"			 : 500,
	"openTypeOS2Selection"				 : [3],
	"openTypeOS2VendorID"				 : "SOME",
	"openTypeOS2Panose"					 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
	"openTypeOS2FamilyClass"			 : [1, 1],
	"openTypeOS2UnicodeRanges"			 : [0, 1],
	"openTypeOS2CodePageRanges"			 : [0, 1],
	"openTypeOS2TypoAscender"			 : 750,
	"openTypeOS2TypoDescender"			 : -250,
	"openTypeOS2TypoLineGap"			 : 200,
	"openTypeOS2WinAscent"				 : 750,
	"openTypeOS2WinDescent"				 : 250,
	"openTypeOS2Type"					 : [],
	"openTypeOS2SubscriptXSize"			 : 200,
	"openTypeOS2SubscriptYSize"			 : 400,
	"openTypeOS2SubscriptXOffset"		 : 0,
	"openTypeOS2SubscriptYOffset"		 : -100,
	"openTypeOS2SuperscriptXSize"		 : 200,
	"openTypeOS2SuperscriptYSize"		 : 400,
	"openTypeOS2SuperscriptXOffset"		 : 0,
	"openTypeOS2SuperscriptYOffset"		 : 200,
	"openTypeOS2StrikeoutSize"			 : 20,
	"openTypeOS2StrikeoutPosition"		 : 300,
	"openTypeVheaVertTypoAscender"		 : 750,
	"openTypeVheaVertTypoDescender"		 : -250,
	"openTypeVheaVertTypoLineGap"		 : 200,
	"openTypeVheaCaretSlopeRise"		 : 0,
	"openTypeVheaCaretSlopeRun"			 : 1,
	"openTypeVheaCaretOffset"			 : 0,
	"postscriptFontName"				 : "SomeFont-Regular (Postscript Font Name)",
	"postscriptFullName"				 : "Some Font-Regular (Postscript Full Name)",
	"postscriptSlantAngle"				 : -12.5,
	"postscriptUniqueID"				 : 4000000,
	"postscriptUnderlineThickness"		 : 20,
	"postscriptUnderlinePosition"		 : -200,
	"postscriptIsFixedPitch"			 : False,
	"postscriptBlueValues"				 : [500, 510],
	"postscriptOtherBlues"				 : [-250, -260],
	"postscriptFamilyBlues"				 : [500, 510],
	"postscriptFamilyOtherBlues"		 : [-250, -260],
	"postscriptStemSnapH"				 : [100, 120],
	"postscriptStemSnapV"				 : [80, 90],
	"postscriptBlueFuzz"				 : 1,
	"postscriptBlueShift"				 : 7,
	"postscriptBlueScale"				 : 0.039625,
	"postscriptForceBold"				 : True,
	"postscriptDefaultWidthX"			 : 400,
	"postscriptNominalWidthX"			 : 400,
	"postscriptWeightName"				 : "Medium",
	"postscriptDefaultCharacter"		 : ".notdef",
	"postscriptWindowsCharacterSet"		 : 1,
	"macintoshFONDFamilyID"				 : 15000,
	"macintoshFONDName"					 : "SomeFont Regular (FOND Name)",
	"woffMajorVersion"					 : 1,
	"woffMinorVersion"					 : 0,
	"woffMetadataUniqueID"				 : dict(id="string"),
	"woffMetadataVendor"				 : dict(name="Some Foundry", url="http://somefoundry.com"),
	"woffMetadataCredits"				 : dict(
												credits=[
													dict(name="Some Designer"),
													dict(name=""),
													dict(name="Some Designer", url="http://somedesigner.com"),
													dict(name="Some Designer", url=""),
													dict(name="Some Designer", role="Designer"),
													dict(name="Some Designer", role=""),
													dict(name="Some Designer", dir="ltr"),
													dict(name="rengiseD emoS", dir="rtl"),
													{"name" : "Some Designer", "class" : "hello"},
													{"name" : "Some Designer", "class" : ""},
												]
											),
	"woffMetadataDescription"			 : dict(
												url="http://somefoundry.com/foo/description",
												text=[
													dict(text="foo"),
													dict(text=""),
													dict(text="foo", language="bar"),
													dict(text="foo", language=""),
													dict(text="foo", dir="ltr"),
													dict(text="foo", dir="rtl"),
													{"text" : "foo", "class" : "foo"},
													{"text" : "foo", "class" : ""},
												]
											),
	"woffMetadataLicense"				 : dict(
												url="http://somefoundry.com/foo/license",
												id="foo",
												text=[
													dict(text="foo"),
													dict(text=""),
													dict(text="foo", language="bar"),
													dict(text="foo", language=""),
													dict(text="foo", dir="ltr"),
													dict(text="foo", dir="rtl"),
													{"text" : "foo", "class" : "foo"},
													{"text" : "foo", "class" : ""},
												]
											),
	"woffMetadataCopyright"				 : dict(
												text=[
													dict(text="foo"),
													dict(text=""),
													dict(text="foo", language="bar"),
													dict(text="foo", language=""),
													dict(text="foo", dir="ltr"),
													dict(text="foo", dir="rtl"),
													{"text" : "foo", "class" : "foo"},
													{"text" : "foo", "class" : ""},
												]
											),
	"woffMetadataTrademark"				 : dict(
												text=[
													dict(text="foo"),
													dict(text=""),
													dict(text="foo", language="bar"),
													dict(text="foo", language=""),
													dict(text="foo", dir="ltr"),
													dict(text="foo", dir="rtl"),
													{"text" : "foo", "class" : "foo"},
													{"text" : "foo", "class" : ""},
												]
											),
	"woffMetadataLicensee"				 : dict(
												name="Some Licensee"
											),
	"woffMetadataExtensions"			 : [
												dict(
													# everything
													names=[
														dict(text="foo"),
														dict(text=""),
														dict(text="foo", language="bar"),
														dict(text="foo", language=""),
														dict(text="foo", dir="ltr"),
														dict(text="foo", dir="rtl"),
														{"text" : "foo", "class" : "hello"},
														{"text" : "foo", "class" : ""},
													],
													items=[
														# everything
														dict(
															id="foo",
															names=[
																dict(text="foo"),
																dict(text=""),
																dict(text="foo", language="bar"),
																dict(text="foo", language=""),
																dict(text="foo", dir="ltr"),
																dict(text="foo", dir="rtl"),
																{"text" : "foo", "class" : "hello"},
																{"text" : "foo", "class" : ""},
															],
															values=[
																dict(text="foo"),
																dict(text=""),
																dict(text="foo", language="bar"),
																dict(text="foo", language=""),
																dict(text="foo", dir="ltr"),
																dict(text="foo", dir="rtl"),
																{"text" : "foo", "class" : "hello"},
																{"text" : "foo", "class" : ""},
															]
														),
														# no id
														dict(
															names=[
																dict(text="foo")
															],
															values=[
																dict(text="foo")
															]
														)
													]
												),
												# no names
												dict(
													items=[
														dict(
															id="foo",
															names=[
																dict(text="foo")
															],
															values=[
																dict(text="foo")
															]
														)
													]
												),
											],
	"guidelines"						 : [
											# ints
											dict(x=100, y=200, angle=45),
											# floats
											dict(x=100.5, y=200.5, angle=45.5),
											# edges
											dict(x=0, y=0, angle=0),
											dict(x=0, y=0, angle=360),
											dict(x=0, y=0, angle=360.0),
											# no y
											dict(x=100),
											# no x
											dict(y=200),
											# name
											dict(x=100, y=200, angle=45, name="foo"),
											dict(x=100, y=200, angle=45, name=""),
											# identifier
											dict(x=100, y=200, angle=45, identifier="guide1"),
											dict(x=100, y=200, angle=45, identifier="guide2"),
											dict(x=100, y=200, angle=45, identifier="\x20"),
											dict(x=100, y=200, angle=45, identifier="\x7E"),
											# colors
											dict(x=100, y=200, angle=45, color="0,0,0,0"),
											dict(x=100, y=200, angle=45, color="1,0,0,0"),
											dict(x=100, y=200, angle=45, color="1,1,1,1"),
											dict(x=100, y=200, angle=45, color="0,1,0,0"),
											dict(x=100, y=200, angle=45, color="0,0,1,0"),
											dict(x=100, y=200, angle=45, color="0,0,0,1"),
											dict(x=100, y=200, angle=45, color="1, 0, 0, 0"),
											dict(x=100, y=200, angle=45, color="0, 1, 0, 0"),
											dict(x=100, y=200, angle=45, color="0, 0, 1, 0"),
											dict(x=100, y=200, angle=45, color="0, 0, 0, 1"),
											dict(x=100, y=200, angle=45, color=".5,0,0,0"),
											dict(x=100, y=200, angle=45, color="0,.5,0,0"),
											dict(x=100, y=200, angle=45, color="0,0,.5,0"),
											dict(x=100, y=200, angle=45, color="0,0,0,.5"),
											dict(x=100, y=200, angle=45, color=".5,1,1,1"),
											dict(x=100, y=200, angle=45, color="1,.5,1,1"),
											dict(x=100, y=200, angle=45, color="1,1,.5,1"),
											dict(x=100, y=200, angle=45, color="1,1,1,.5"),
										],
}

expectedFontInfo1To2Conversion = {
	"familyName"						: "Some Font (Family Name)",
	"styleMapFamilyName"				: "Some Font Regular (Style Map Family Name)",
	"styleMapStyleName"					: "regular",
	"styleName"							: "Regular (Style Name)",
	"unitsPerEm"						: 1000,
	"ascender"							: 750,
	"capHeight"							: 750,
	"xHeight"							: 500,
	"descender"							: -250,
	"italicAngle"						: -12.5,
	"versionMajor"						: 1,
	"versionMinor"						: 0,
	"year"								: 2008,
	"copyright"							: "Copyright Some Foundry.",
	"trademark"							: "Trademark Some Foundry",
	"note"								: "A note.",
	"macintoshFONDFamilyID"				: 15000,
	"macintoshFONDName"					: "SomeFont Regular (FOND Name)",
	"openTypeNameCompatibleFullName"	: "Some Font Regular (Compatible Full Name)",
	"openTypeNameDescription"			: "Some Font by Some Designer for Some Foundry.",
	"openTypeNameDesigner"				: "Some Designer",
	"openTypeNameDesignerURL"			: "http://somedesigner.com",
	"openTypeNameLicense"				: "License info for Some Foundry.",
	"openTypeNameLicenseURL"			: "http://somefoundry.com/license",
	"openTypeNameManufacturer"			: "Some Foundry",
	"openTypeNameManufacturerURL"		: "http://somefoundry.com",
	"openTypeNamePreferredFamilyName"	: "Some Font (Preferred Family Name)",
	"openTypeNamePreferredSubfamilyName": "Regular (Preferred Subfamily Name)",
	"openTypeNameCompatibleFullName"	: "Some Font Regular (Compatible Full Name)",
	"openTypeNameUniqueID"				: "OpenType name Table Unique ID",
	"openTypeNameVersion"				: "OpenType name Table Version",
	"openTypeOS2VendorID"				: "SOME",
	"openTypeOS2WeightClass"			: 500,
	"openTypeOS2WidthClass"				: 5,
	"postscriptDefaultWidthX"			: 400,
	"postscriptFontName"				: "SomeFont-Regular (Postscript Font Name)",
	"postscriptFullName"				: "Some Font-Regular (Postscript Full Name)",
	"postscriptSlantAngle"				: -12.5,
	"postscriptUniqueID"				: 4000000,
	"postscriptWeightName"				: "Medium",
	"postscriptWindowsCharacterSet"		: 1
}

expectedFontInfo2To1Conversion = {
	"familyName"  	: "Some Font (Family Name)",
	"menuName"	  	: "Some Font Regular (Style Map Family Name)",
	"fontStyle"	  	: 64,
	"styleName"	  	: "Regular (Style Name)",
	"unitsPerEm"  	: 1000,
	"ascender"	  	: 750,
	"capHeight"	  	: 750,
	"xHeight"	  	: 500,
	"descender"	  	: -250,
	"italicAngle" 	: -12.5,
	"versionMajor"	: 1,
	"versionMinor"	: 0,
	"copyright"	  	: "Copyright Some Foundry.",
	"trademark"	  	: "Trademark Some Foundry",
	"note"		  	: "A note.",
	"fondID"	  	: 15000,
	"fondName"	  	: "SomeFont Regular (FOND Name)",
	"fullName"	  	: "Some Font Regular (Compatible Full Name)",
	"notice"	  	: "Some Font by Some Designer for Some Foundry.",
	"designer"	  	: "Some Designer",
	"designerURL" 	: "http://somedesigner.com",
	"license"	  	: "License info for Some Foundry.",
	"licenseURL"  	: "http://somefoundry.com/license",
	"createdBy"	  	: "Some Foundry",
	"vendorURL"	  	: "http://somefoundry.com",
	"otFamilyName"	: "Some Font (Preferred Family Name)",
	"otStyleName" 	: "Regular (Preferred Subfamily Name)",
	"otMacName"	  	: "Some Font Regular (Compatible Full Name)",
	"ttUniqueID"  	: "OpenType name Table Unique ID",
	"ttVersion"	  	: "OpenType name Table Version",
	"ttVendor"	  	: "SOME",
	"weightValue" 	: 500,
	"widthName"	  	: "Medium (normal)",
	"defaultWidth"	: 400,
	"fontName"	  	: "SomeFont-Regular (Postscript Font Name)",
	"fullName"	  	: "Some Font-Regular (Postscript Full Name)",
	"slantAngle"  	: -12.5,
	"uniqueID"	  	: 4000000,
	"weightName"  	: "Medium",
	"msCharSet"	  	: 0,
	"year"			: 2008
}