diff options
Diffstat (limited to 'scripts/lib/fontbuild')
-rw-r--r-- | scripts/lib/fontbuild/Build.py | 5 | ||||
-rw-r--r-- | scripts/lib/fontbuild/anchors.py | 7 | ||||
-rw-r--r-- | scripts/lib/fontbuild/generateGlyph.py | 57 |
3 files changed, 60 insertions, 9 deletions
diff --git a/scripts/lib/fontbuild/Build.py b/scripts/lib/fontbuild/Build.py index b8943f7..490fe45 100644 --- a/scripts/lib/fontbuild/Build.py +++ b/scripts/lib/fontbuild/Build.py @@ -62,6 +62,7 @@ class FontProject: self.predecompose = self.config.get("glyphs","predecompose").split() self.lessItalic = self.config.get("glyphs","lessitalic").split() self.deleteList = self.config.get("glyphs","delete").split() + self.noItalic = self.config.get("glyphs","noitalic").split() self.buildnumber = self.loadBuildNumber() self.buildOTF = False @@ -134,8 +135,10 @@ class FontProject: if g.name in self.lessItalic: italicizeGlyph(f, g, 9, stemWidth=stemWidth) - elif g.name != ".notdef": + elif False == (g.name in self.noItalic): italicizeGlyph(f, g, 10, stemWidth=stemWidth) + #elif g.name != ".notdef": + # italicizeGlyph(g, 10, stemWidth=stemWidth) if g.width != 0: g.width += 10 diff --git a/scripts/lib/fontbuild/anchors.py b/scripts/lib/fontbuild/anchors.py index 622d52a..51fb57a 100644 --- a/scripts/lib/fontbuild/anchors.py +++ b/scripts/lib/fontbuild/anchors.py @@ -27,15 +27,18 @@ def getAnchorByName(g,anchorName): if a.name == anchorName: return a - def moveMarkAnchors(f, g, anchorName, accentName, dx, dy): if "top"==anchorName: anchors = f[accentName].anchors for anchor in anchors: if "mkmktop_acc" == anchor.name: + for i in range(len(g.anchors)): + if g.anchors[i].name == "top": + del g.anchors[i] + break g.appendAnchor("top", (anchor.x + int(dx), anchor.y + int(dy))) - elif "bottom"==anchorName: + elif anchorName in ["bottom", "bottomu"]: anchors = f[accentName].anchors for anchor in anchors: if "mkmkbottom_acc" == anchor.name: diff --git a/scripts/lib/fontbuild/generateGlyph.py b/scripts/lib/fontbuild/generateGlyph.py index c674c38..4079046 100644 --- a/scripts/lib/fontbuild/generateGlyph.py +++ b/scripts/lib/fontbuild/generateGlyph.py @@ -15,7 +15,7 @@ import re from anchors import alignComponentsToAnchors - +from string import find def parseComposite(composite): c = composite.split("=") @@ -33,6 +33,7 @@ def parseComposite(composite): def copyMarkAnchors(f, g, srcname, width): + unicode_range = range(0x0030, 0x02B0) + range(0x1E00, 0x1EFF) anchors = f[srcname].anchors for anchor in anchors: if "top_dd" == anchor.name: @@ -43,19 +44,63 @@ def copyMarkAnchors(f, g, srcname, width): g.appendAnchor(anchor.name, (anchor.x + width, anchor.y)) if "top" == anchor.name: if g.unicode == None: - continue - if g.unicode > 0x02B0: - continue + if -1 == find(g.name, ".ccmp"): + continue + if False == (g.unicode in unicode_range): + if -1 == find(g.name, ".ccmp"): + continue + #if g.unicode > 0x02B0: + # continue parenttop_present = 0 for anc in g.anchors: if anc.name == "parent_top": parenttop_present = 1 - if parenttop_present: + if 0 == parenttop_present: + g.appendAnchor("parent_top", anchor.position) + + if "bottom" == anchor.name: + if g.unicode == None: continue - g.appendAnchor("parent_top", anchor.position) + if False == (g.unicode in unicode_range): + continue + #if g.unicode > 0x02B0: + # continue + bottom_present = 0 + for anc in g.anchors: + if anc.name == "bottom": + bottom_present = 1 + if 0 == bottom_present: + anchor2 = Anchor(anchor) + anchor2.name = "bottom" +# anchor1.x += width + g.anchors.append(anchor2) + +# anchor1 = Anchor(anchor) +# anchor1.name = "top" +# anchor1.x += width +# g.anchors.append(anchor1) + # if "rhotichook" == anchor.name: # g.appendAnchor(anchor.name, (anchor.x + width, anchor.y)) + + #print g.anchors + for anchor in g.anchors: + if "top" == anchor.name: + #print g.name, g.anchors + return + + anchor_parent_top = None + + for anchor in g.anchors: + if "parent_top" == anchor.name: + anchor_parent_top = anchor + break + + if anchor_parent_top: + anchor_top = Anchor(anchor_parent_top) + anchor_top.name = "top" + g.anchors.append(anchor_top) def generateGlyph(f,gname,glyphList={}): |