Spaces:
				
			
			
	
			
			
		Paused
		
	
	
	
			
			
	
	
	
	
		
		
		Paused
		
	| # Since bitmap glyph metrics are shared between EBLC and EBDT | |
| # this class gets its own python file. | |
| from fontTools.misc import sstruct | |
| from fontTools.misc.textTools import safeEval | |
| import logging | |
| log = logging.getLogger(__name__) | |
| bigGlyphMetricsFormat = """ | |
| > # big endian | |
| height: B | |
| width: B | |
| horiBearingX: b | |
| horiBearingY: b | |
| horiAdvance: B | |
| vertBearingX: b | |
| vertBearingY: b | |
| vertAdvance: B | |
| """ | |
| smallGlyphMetricsFormat = """ | |
| > # big endian | |
| height: B | |
| width: B | |
| BearingX: b | |
| BearingY: b | |
| Advance: B | |
| """ | |
| class BitmapGlyphMetrics(object): | |
| def toXML(self, writer, ttFont): | |
| writer.begintag(self.__class__.__name__) | |
| writer.newline() | |
| for metricName in sstruct.getformat(self.__class__.binaryFormat)[1]: | |
| writer.simpletag(metricName, value=getattr(self, metricName)) | |
| writer.newline() | |
| writer.endtag(self.__class__.__name__) | |
| writer.newline() | |
| def fromXML(self, name, attrs, content, ttFont): | |
| metricNames = set(sstruct.getformat(self.__class__.binaryFormat)[1]) | |
| for element in content: | |
| if not isinstance(element, tuple): | |
| continue | |
| name, attrs, content = element | |
| # Make sure this is a metric that is needed by GlyphMetrics. | |
| if name in metricNames: | |
| vars(self)[name] = safeEval(attrs["value"]) | |
| else: | |
| log.warning( | |
| "unknown name '%s' being ignored in %s.", | |
| name, | |
| self.__class__.__name__, | |
| ) | |
| class BigGlyphMetrics(BitmapGlyphMetrics): | |
| binaryFormat = bigGlyphMetricsFormat | |
| class SmallGlyphMetrics(BitmapGlyphMetrics): | |
| binaryFormat = smallGlyphMetricsFormat | |