Пример #1
0
 def _startElementHandler(self, name, attrs):
     stackSize = self.stackSize
     self.stackSize = stackSize + 1
     if not stackSize:
         if name != "ttFont":
             raise TTXParseError("illegal root tag: %s" % name)
         sfntVersion = attrs.get("sfntVersion")
         if sfntVersion is not None:
             if len(sfntVersion) != 4:
                 sfntVersion = safeEval('"' + sfntVersion + '"')
             self.ttFont.sfntVersion = sfntVersion
         self.contentStack.append([])
     elif stackSize == 1:
         subFile = attrs.get("src")
         if subFile is not None:
             if hasattr(self.file, 'name'):
                 # if file has a name, get its parent directory
                 dirname = os.path.dirname(self.file.name)
             else:
                 # else fall back to using the current working directory
                 dirname = os.getcwd()
             subFile = os.path.join(dirname, subFile)
             subReader = XMLReader(subFile, self.ttFont, self.progress,
                                   self.quiet)
             subReader.read()
             self.contentStack.append([])
             return
         tag = ttLib.xmlToTag(name)
         msg = "Parsing '%s' table..." % tag
         if self.progress:
             self.progress.setLabel(msg)
         elif self.ttFont.verbose:
             ttLib.debugmsg(msg)
         else:
             if not self.quiet:
                 print(msg)
         if tag == "GlyphOrder":
             tableClass = ttLib.GlyphOrder
         elif "ERROR" in attrs or ('raw' in attrs
                                   and safeEval(attrs['raw'])):
             tableClass = DefaultTable
         else:
             tableClass = ttLib.getTableClass(tag)
             if tableClass is None:
                 tableClass = DefaultTable
         if tag == 'loca' and tag in self.ttFont:
             # Special-case the 'loca' table as we need the
             #    original if the 'glyf' table isn't recompiled.
             self.currentTable = self.ttFont[tag]
         else:
             self.currentTable = tableClass(tag)
             self.ttFont[tag] = self.currentTable
         self.contentStack.append([])
     elif stackSize == 2:
         self.contentStack.append([])
         self.root = (name, attrs, self.contentStack[-1])
     else:
         l = []
         self.contentStack[-1].append((name, attrs, l))
         self.contentStack.append(l)
Пример #2
0
	def _startElementHandler(self, name, attrs):
		stackSize = self.stackSize
		self.stackSize = stackSize + 1
		if not stackSize:
			if name != "ttFont":
				raise TTXParseError("illegal root tag: %s" % name)
			sfntVersion = attrs.get("sfntVersion")
			if sfntVersion is not None:
				if len(sfntVersion) != 4:
					sfntVersion = safeEval('"' + sfntVersion + '"')
				self.ttFont.sfntVersion = sfntVersion
			self.contentStack.append([])
		elif stackSize == 1:
			subFile = attrs.get("src")
			if subFile is not None:
				if hasattr(self.file, 'name'):
					# if file has a name, get its parent directory
					dirname = os.path.dirname(self.file.name)
				else:
					# else fall back to using the current working directory
					dirname = os.getcwd()
				subFile = os.path.join(dirname, subFile)
				subReader = XMLReader(subFile, self.ttFont, self.progress, self.quiet)
				subReader.read()
				self.contentStack.append([])
				return
			tag = ttLib.xmlToTag(name)
			msg = "Parsing '%s' table..." % tag
			if self.progress:
				self.progress.setLabel(msg)
			elif self.ttFont.verbose:
				ttLib.debugmsg(msg)
			else:
				if not self.quiet:
					print(msg)
			if tag == "GlyphOrder":
				tableClass = ttLib.GlyphOrder
			elif "ERROR" in attrs or ('raw' in attrs and safeEval(attrs['raw'])):
				tableClass = DefaultTable
			else:
				tableClass = ttLib.getTableClass(tag)
				if tableClass is None:
					tableClass = DefaultTable
			if tag == 'loca' and tag in self.ttFont:
				# Special-case the 'loca' table as we need the
				#    original if the 'glyf' table isn't recompiled.
				self.currentTable = self.ttFont[tag]
			else:
				self.currentTable = tableClass(tag)
				self.ttFont[tag] = self.currentTable
			self.contentStack.append([])
		elif stackSize == 2:
			self.contentStack.append([])
			self.root = (name, attrs, self.contentStack[-1])
		else:
			l = []
			self.contentStack[-1].append((name, attrs, l))
			self.contentStack.append(l)
Пример #3
0
	def startElementHandler(self, name, attrs):
		stackSize = self.stackSize
		self.stackSize = stackSize + 1
		if not stackSize:
			if name <> "ttFont":
				raise TTXParseError, "illegal root tag: %s" % name
			sfntVersion = attrs.get("sfntVersion")
			if sfntVersion is not None:
				if len(sfntVersion) <> 4:
					sfntVersion = safeEval('"' + sfntVersion + '"')
				self.ttFont.sfntVersion = sfntVersion
			self.contentStack.append([])
		elif stackSize == 1:
			subFile = attrs.get("src")
			if subFile is not None:
				subFile = os.path.join(os.path.dirname(self.fileName), subFile)
				importXML(self.ttFont, subFile, self.progress)
				self.contentStack.append([])
				return
			tag = ttLib.xmlToTag(name)
			msg = "Parsing '%s' table..." % tag
			if self.progress:
				self.progress.setlabel(msg)
			elif self.ttFont.verbose:
				ttLib.debugmsg(msg)
			else:
				if not self.quiet:
					print msg
			if tag == "GlyphOrder":
				tableClass = ttLib.GlyphOrder
			elif attrs.has_key("ERROR"):
				tableClass = DefaultTable
			else:
				tableClass = ttLib.getTableClass(tag)
				if tableClass is None:
					tableClass = DefaultTable
			if tag == 'loca' and self.ttFont.has_key(tag):
				# Special-case the 'loca' table as we need the
				#    original if the 'glyf' table isn't recompiled.
				self.currentTable = self.ttFont[tag]
			else:
				self.currentTable = tableClass(tag)
				self.ttFont[tag] = self.currentTable
			self.contentStack.append([])
		elif stackSize == 2:
			self.contentStack.append([])
			self.root = (name, attrs, self.contentStack[-1])
		else:
			list = []
			self.contentStack[-1].append((name, attrs, list))
			self.contentStack.append(list)
Пример #4
0
 def startElementHandler(self, name, attrs):
     stackSize = self.stackSize
     self.stackSize = stackSize + 1
     if not stackSize:
         if name <> "ttFont":
             raise TTXParseError, "illegal root tag: %s" % name
         sfntVersion = attrs.get("sfntVersion")
         if sfntVersion is not None:
             if len(sfntVersion) <> 4:
                 sfntVersion = safeEval('"' + sfntVersion + '"')
             self.ttFont.sfntVersion = sfntVersion
         self.contentStack.append([])
     elif stackSize == 1:
         subFile = attrs.get("src")
         if subFile is not None:
             subFile = os.path.join(os.path.dirname(self.fileName), subFile)
             importXML(self.ttFont, subFile, self.progress)
             self.contentStack.append([])
             return
         tag = ttLib.xmlToTag(name)
         msg = "Parsing '%s' table..." % tag
         if self.progress:
             self.progress.setlabel(msg)
         elif self.ttFont.verbose:
             ttLib.debugmsg(msg)
         else:
             print msg
         if tag == "GlyphOrder":
             tableClass = ttLib.GlyphOrder
         elif attrs.has_key("ERROR"):
             tableClass = DefaultTable
         else:
             tableClass = ttLib.getTableClass(tag)
             if tableClass is None:
                 tableClass = DefaultTable
         if tag == 'loca' and self.ttFont.has_key(tag):
             # Special-case the 'loca' table as we need the
             #    original if the 'glyf' table isn't recompiled.
             self.currentTable = self.ttFont[tag]
         else:
             self.currentTable = tableClass(tag)
             self.ttFont[tag] = self.currentTable
         self.contentStack.append([])
     elif stackSize == 2:
         self.contentStack.append([])
         self.root = (name, attrs, self.contentStack[-1])
     else:
         list = []
         self.contentStack[-1].append((name, attrs, list))
         self.contentStack.append(list)