Implement originOffsetX/Y for glyph data records

This commit is contained in:
Jens Kutilek 2014-09-22 18:18:01 +02:00
parent 89e9842d0b
commit 2e262319eb
2 changed files with 33 additions and 16 deletions

View File

@ -7,8 +7,14 @@ import struct
sbixBitmapHeaderFormat = """
>
usReserved1: H # 00 00
usReserved2: H # 00 00
originOffsetX: h # The x-value of the point in the glyph relative to its
# lower-left corner which corresponds to the origin of
# the glyph on the screen, that is the point on the
# baseline at the left edge of the glyph.
originOffsetY: h # The y-value of the point in the glyph relative to its
# lower-left corner which corresponds to the origin of
# the glyph on the screen, that is the point on the
# baseline at the left edge of the glyph.
imageFormatTag: 4s # e.g. "png "
"""
@ -16,12 +22,12 @@ sbixBitmapHeaderFormatSize = sstruct.calcsize(sbixBitmapHeaderFormat)
class Bitmap(object):
def __init__(self, glyphName=None, referenceGlyphName=None, usReserved1=0, usReserved2=0, imageFormatTag=None, imageData=None, rawdata=None, gid=0):
def __init__(self, glyphName=None, referenceGlyphName=None, originOffsetX=0, originOffsetY=0, imageFormatTag=None, imageData=None, rawdata=None, gid=0):
self.gid = gid
self.glyphName = glyphName
self.referenceGlyphName = referenceGlyphName
self.usReserved1 = usReserved1
self.usReserved2 = usReserved2
self.originOffsetX = originOffsetX
self.originOffsetY = originOffsetY
self.rawdata = rawdata
self.imageFormatTag = imageFormatTag
self.imageData = imageData
@ -70,12 +76,13 @@ class Bitmap(object):
xmlWriter.simpletag("bitmap", glyphname=self.glyphName)
xmlWriter.newline()
return
xmlWriter.begintag("bitmap", format=self.imageFormatTag, glyphname=self.glyphName)
xmlWriter.begintag("bitmap",
format=self.imageFormatTag,
glyphname=self.glyphName,
originOffsetX=self.originOffsetX,
originOffsetY=self.originOffsetY,
)
xmlWriter.newline()
#xmlWriter.simpletag("usReserved1", value=self.usReserved1)
#xmlWriter.newline()
#xmlWriter.simpletag("usReserved2", value=self.usReserved2)
#xmlWriter.newline()
if self.imageFormatTag == "dupe":
# format == "dupe" is apparently a reference to another glyph id.
xmlWriter.simpletag("ref", glyphname=self.referenceGlyphName)
@ -89,9 +96,6 @@ class Bitmap(object):
xmlWriter.newline()
def fromXML(self, name, attrs, content, ttFont):
#if name in ["usReserved1", "usReserved2"]:
# setattr(self, name, int(attrs["value"]))
#elif
if name == "ref":
# bitmap is a "dupe", i.e. a reference to another bitmap.
# in this case imageData contains the glyph id of the reference glyph

View File

@ -121,7 +121,20 @@ class Strike(object):
else:
from fontTools import ttLib
raise ttLib.TTLibError("Bitmap must have a glyph name.")
myBitmap = Bitmap(glyphName=myGlyphName, imageFormatTag=myFormat)
if "originOffsetX" in attrs:
myOffsetX = int(attrs["originOffsetX"])
else:
myOffsetX = 0
if "originOffsetY" in attrs:
myOffsetY = int(attrs["originOffsetY"])
else:
myOffsetY = 0
myBitmap = Bitmap(
glyphName=myGlyphName,
imageFormatTag=myFormat,
originOffsetX=myOffsetX,
originOffsetY=myOffsetY,
)
for element in content:
if isinstance(element, tuple):
name, attrs, content = element