コード例 #1
0
    def save(self, file, makeSuitcase=False, reorderTables=True):
        """Save the font to disk. Similarly to the constructor,
		the 'file' argument can be either a pathname or a writable
		file object.

		On the Mac, if makeSuitcase is true, a suitcase (resource fork)
		file will we made instead of a flat .ttf file.
		"""
        from fontTools.ttLib import sfnt
        if not hasattr(file, "write"):
            closeStream = 1
            if os.name == "mac" and makeSuitcase:
                from . import macUtils
                file = macUtils.SFNTResourceWriter(file, self)
            else:
                file = open(file, "wb")
                if os.name == "mac":
                    from fontTools.misc.macCreator import setMacCreatorAndType
                    setMacCreatorAndType(file.name, 'mdos', 'BINA')
        else:
            # assume "file" is a writable file object
            closeStream = 0

        tags = list(self.keys())
        if "GlyphOrder" in tags:
            tags.remove("GlyphOrder")
        numTables = len(tags)
        # write to a temporary stream to allow saving to unseekable streams
        tmp = BytesIO()
        writer = sfnt.SFNTWriter(tmp, numTables, self.sfntVersion, self.flavor,
                                 self.flavorData)

        done = []
        for tag in tags:
            self._writeTable(tag, writer, done)

        writer.close()

        if (reorderTables is None or writer.reordersTables()
                or (reorderTables is False and self.reader is None)):
            # don't reorder tables and save as is
            file.write(tmp.getvalue())
            tmp.close()
        else:
            if reorderTables is False:
                # sort tables using the original font's order
                tableOrder = list(self.reader.keys())
            else:
                # use the recommended order from the OpenType specification
                tableOrder = None
            tmp.flush()
            tmp.seek(0)
            tmp2 = BytesIO()
            reorderFontTables(tmp, tmp2, tableOrder)
            file.write(tmp2.getvalue())
            tmp.close()
            tmp2.close()

        if closeStream:
            file.close()
コード例 #2
0
ファイル: __init__.py プロジェクト: CodeOps/fonttools
	def save(self, file, makeSuitcase=False, reorderTables=True):
		"""Save the font to disk. Similarly to the constructor,
		the 'file' argument can be either a pathname or a writable
		file object.

		On the Mac, if makeSuitcase is true, a suitcase (resource fork)
		file will we made instead of a flat .ttf file.
		"""
		from fontTools.ttLib import sfnt
		if not hasattr(file, "write"):
			closeStream = 1
			if os.name == "mac" and makeSuitcase:
				from . import macUtils
				file = macUtils.SFNTResourceWriter(file, self)
			else:
				file = open(file, "wb")
				if os.name == "mac":
					from fontTools.misc.macCreator import setMacCreatorAndType
					setMacCreatorAndType(file.name, 'mdos', 'BINA')
		else:
			# assume "file" is a writable file object
			closeStream = 0

		tags = list(self.keys())
		if "GlyphOrder" in tags:
			tags.remove("GlyphOrder")
		numTables = len(tags)
		# write to a temporary stream to allow saving to unseekable streams
		tmp = BytesIO()
		writer = sfnt.SFNTWriter(tmp, numTables, self.sfntVersion, self.flavor, self.flavorData)

		done = []
		for tag in tags:
			self._writeTable(tag, writer, done)

		writer.close()

		if (reorderTables is None or writer.reordersTables() or
				(reorderTables is False and self.reader is None)):
			# don't reorder tables and save as is
			file.write(tmp.getvalue())
			tmp.close()
		else:
			if reorderTables is False:
				# sort tables using the original font's order
				tableOrder = list(self.reader.keys())
			else:
				# use the recommended order from the OpenType specification
				tableOrder = None
			tmp.flush()
			tmp.seek(0)
			tmp2 = BytesIO()
			reorderFontTables(tmp, tmp2, tableOrder)
			file.write(tmp2.getvalue())
			tmp.close()
			tmp2.close()

		if closeStream:
			file.close()
コード例 #3
0
ファイル: __init__.py プロジェクト: sahwar/fontuley
    def save(self, file, makeSuitcase=False, reorderTables=True):
        """Save the font to disk. Similarly to the constructor, 
		the 'file' argument can be either a pathname or a writable
		file object.
		
		On the Mac, if makeSuitcase is true, a suitcase (resource fork)
		file will we made instead of a flat .ttf file. 
		"""
        from fontTools.ttLib import sfnt
        if not hasattr(file, "write"):
            closeStream = 1
            if os.name == "mac" and makeSuitcase:
                from . import macUtils
                file = macUtils.SFNTResourceWriter(file, self)
            else:
                file = open(file, "wb")
                if os.name == "mac":
                    from fontTools.misc.macCreator import setMacCreatorAndType
                    setMacCreatorAndType(file.name, 'mdos', 'BINA')
        else:
            # assume "file" is a writable file object
            closeStream = 0

        tags = list(self.keys())
        if "GlyphOrder" in tags:
            tags.remove("GlyphOrder")
        numTables = len(tags)
        if reorderTables:
            import tempfile
            tmp = tempfile.TemporaryFile(prefix="ttx-fonttools")
        else:
            tmp = file
        writer = sfnt.SFNTWriter(tmp, numTables, self.sfntVersion, self.flavor,
                                 self.flavorData)

        done = []
        for tag in tags:
            self._writeTable(tag, writer, done)

        writer.close()

        if reorderTables:
            tmp.flush()
            tmp.seek(0)
            reorderFontTables(tmp, file)
            tmp.close()

        if closeStream:
            file.close()
コード例 #4
0
ファイル: __init__.py プロジェクト: StGlolry/fonttools
	def save(self, file, makeSuitcase=False, reorderTables=True):
		"""Save the font to disk. Similarly to the constructor,
		the 'file' argument can be either a pathname or a writable
		file object.

		On the Mac, if makeSuitcase is true, a suitcase (resource fork)
		file will we made instead of a flat .ttf file.
		"""
		from fontTools.ttLib import sfnt
		if not hasattr(file, "write"):
			closeStream = 1
			if os.name == "mac" and makeSuitcase:
				from . import macUtils
				file = macUtils.SFNTResourceWriter(file, self)
			else:
				file = open(file, "wb")
				if os.name == "mac":
					from fontTools.misc.macCreator import setMacCreatorAndType
					setMacCreatorAndType(file.name, 'mdos', 'BINA')
		else:
			# assume "file" is a writable file object
			closeStream = 0

		tags = list(self.keys())
		if "GlyphOrder" in tags:
			tags.remove("GlyphOrder")
		numTables = len(tags)
		if reorderTables:
			import tempfile
			tmp = tempfile.TemporaryFile(prefix="ttx-fonttools")
		else:
			tmp = file
		writer = sfnt.SFNTWriter(tmp, numTables, self.sfntVersion, self.flavor, self.flavorData)

		done = []
		for tag in tags:
			self._writeTable(tag, writer, done)

		writer.close()

		if reorderTables:
			tmp.flush()
			tmp.seek(0)
			reorderFontTables(tmp, file)
			tmp.close()

		if closeStream:
			file.close()