##########################################
# FontLab Studio v5 Python program 
# for placing diacritics to Greek letters
##########################################
# Author: Yannis Haralambous, yannis.gr
# License: GPL open source
# Date: January 15th, 2007
# Version: 1.0
##########################################
# SCRIPT NAME: make-accent1.py
##########################################
##########################################
# GIVE VALUE TO THE FOLLOWING PARAMETER:
##########################################
propacute=.25
##########################################
def check_glyph(glyphname):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph(glyphname)]
	if (g==None):
		fl.Message("Glyph "+glyphname+" does not exist in the font","Stop","Stop")
		exit()
	else: return g
def check_anchor(glyphname,anchorname):
	g=check_glyph(glyphname)
	for i in range(len(g.anchors)):
		if (g.anchors[i].name==anchorname): return g.anchors[i]
	fl.Message("Glyph "+glyphname+" has no anchor "+anchorname,"Stop","Stop")
	exit()

from math import tan,radians
angle=90+fl[fl.ifont].italic_angle
if (angle==0 or angle==90) : slant=0
else: slant=1/(tan(radians(angle)))
lmarge=100+fl[fl.ifont].underline_thickness
rmarge=50+fl[fl.ifont].underline_thickness
tsb=fl[fl.ifont][fl[fl.ifont].FindGlyph("T")].left_side_bearing
r1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Z")].GetBoundingRect()
r2=fl[fl.ifont][fl[fl.ifont].FindGlyph("z")].GetBoundingRect()
uldiff=r1.ur.y-r2.ur.y
if (fl[fl.ifont].FindGlyph("uni1FFD.high")!=-1): r2=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD.high")].GetBoundingRect()
else: r2=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD")].GetBoundingRect()
if (r2.ur.y>r1.ur.y): yoffset=r2.ur.y-r1.ur.y
else: yoffset=0
a=check_anchor("eta","axeeta")
axeeta=a.x-(a.y*slant)
a=check_anchor("iota","axeiota")
axeiota=a.x-(a.y*slant)
a=check_anchor("uni037A","axehypo")
axehypo=a.x-(a.y*slant)
if (slant==0): 
	r1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Alpha")].GetBoundingRect()
	r2=fl[fl.ifont][fl[fl.ifont].FindGlyph("Eta")].GetBoundingRect()
	r3=fl[fl.ifont][fl[fl.ifont].FindGlyph("Omega")].GetBoundingRect()
	r4=fl[fl.ifont][fl[fl.ifont].FindGlyph("Iota")].GetBoundingRect()
	r5=fl[fl.ifont][fl[fl.ifont].FindGlyph("Upsilon")].GetBoundingRect()
	axeAlphaBase=(r1.ll.x+r1.ur.x)/2
	axeAlphaTop=axeAlphaBase
	axeEtaBase=(r2.ll.x+r2.ur.x)/2
	axeOmegaBase=(r3.ll.x+r3.ur.x)/2
	axeIotaBase=(r4.ll.x+r4.ur.x)/2
	axeUpsilonBase=(r5.ll.x+r5.ur.x)/2
else:
	a=check_anchor("Alpha","alphabase")
	axeAlphaBase=a.x-(a.y*slant)
	a=check_anchor("Alpha","alphatop")
	axeAlphaTop=a.x-(a.y*slant)
	a=check_anchor("Eta","etabase")
	axeEtaBase=a.x-(a.y*slant)
	a=check_anchor("Iota","iotabase")
	axeIotaBase=a.x-(a.y*slant)
	a=check_anchor("Upsilon","upsilonbase")
	axeUpsilonBase=a.x-(a.y*slant)
	a=check_anchor("Omega","omegabase")
	axeOmegaBase=a.x-(a.y*slant)

# FIXSIDEBEARINGS uni037A
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni037A")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# COPY 1FBE uni1FBE uni037A
fl[fl.ifont].GenerateGlyph("uni1FBE")
deja=fl[fl.ifont].FindGlyph("uni1FBE")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBE")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni037A")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FBE"
g.unicode=0x1FBE
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# FIXSIDEBEARINGS uni1FBE
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBE")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FBD.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBD.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FC0.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC0.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FC1.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC1.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FCD.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCD.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FCE.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCE.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FCF.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCF.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FDD.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDD.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FDE.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDE.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FDF.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDF.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FED.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FED.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FEE.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEE.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FEF.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEF.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FFD.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# FIXSIDEBEARINGS uni1FFE.high
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFE.high")]
g1=g
if len(g.components)>0: g1=fl[fl.ifont][g.components[0].index]
r1=g1.GetBoundingRect()
g.Shift(Point(-r1.ll.x+lmarge+slant*r1.ll.y,0))
for i in range(len(g.anchors)):
	g.anchors[i].x=int(g.anchors[i].x-r1.ll.x+lmarge+slant*r1.ll.y)
g.width=int(lmarge+(r1.ur.x-r1.ll.x)+rmarge)

# COPY 1FBD uni1FBD uni1FBD.high
fl[fl.ifont].GenerateGlyph("uni1FBD")
deja=fl[fl.ifont].FindGlyph("uni1FBD")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBD")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBD.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FBD"
g.unicode=0x1FBD
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FC0 uni1FC0 uni1FC0.high
fl[fl.ifont].GenerateGlyph("uni1FC0")
deja=fl[fl.ifont].FindGlyph("uni1FC0")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC0")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC0.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FC0"
g.unicode=0x1FC0
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FC1 uni1FC1 uni1FC1.high
fl[fl.ifont].GenerateGlyph("uni1FC1")
deja=fl[fl.ifont].FindGlyph("uni1FC1")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC1")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC1.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FC1"
g.unicode=0x1FC1
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FCD uni1FCD uni1FCD.high
fl[fl.ifont].GenerateGlyph("uni1FCD")
deja=fl[fl.ifont].FindGlyph("uni1FCD")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCD")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCD.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FCD"
g.unicode=0x1FCD
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FCE uni1FCE uni1FCE.high
fl[fl.ifont].GenerateGlyph("uni1FCE")
deja=fl[fl.ifont].FindGlyph("uni1FCE")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCE")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCE.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FCE"
g.unicode=0x1FCE
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FCF uni1FCF uni1FCF.high
fl[fl.ifont].GenerateGlyph("uni1FCF")
deja=fl[fl.ifont].FindGlyph("uni1FCF")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCF")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCF.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FCF"
g.unicode=0x1FCF
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FDD uni1FDD uni1FDD.high
fl[fl.ifont].GenerateGlyph("uni1FDD")
deja=fl[fl.ifont].FindGlyph("uni1FDD")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDD")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDD.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FDD"
g.unicode=0x1FDD
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FDE uni1FDE uni1FDE.high
fl[fl.ifont].GenerateGlyph("uni1FDE")
deja=fl[fl.ifont].FindGlyph("uni1FDE")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDE")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDE.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FDE"
g.unicode=0x1FDE
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FDF uni1FDF uni1FDF.high
fl[fl.ifont].GenerateGlyph("uni1FDF")
deja=fl[fl.ifont].FindGlyph("uni1FDF")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDF")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDF.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FDF"
g.unicode=0x1FDF
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FED uni1FED uni1FED.high
fl[fl.ifont].GenerateGlyph("uni1FED")
deja=fl[fl.ifont].FindGlyph("uni1FED")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FED")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FED.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FED"
g.unicode=0x1FED
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FEE uni1FEE uni1FEE.high
fl[fl.ifont].GenerateGlyph("uni1FEE")
deja=fl[fl.ifont].FindGlyph("uni1FEE")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEE")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEE.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FEE"
g.unicode=0x1FEE
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FEF uni1FEF uni1FEF.high
fl[fl.ifont].GenerateGlyph("uni1FEF")
deja=fl[fl.ifont].FindGlyph("uni1FEF")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEF")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEF.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FEF"
g.unicode=0x1FEF
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FFD uni1FFD uni1FFD.high
fl[fl.ifont].GenerateGlyph("uni1FFD")
deja=fl[fl.ifont].FindGlyph("uni1FFD")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FFD"
g.unicode=0x1FFD
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY 1FFE uni1FFE uni1FFE.high
fl[fl.ifont].GenerateGlyph("uni1FFE")
deja=fl[fl.ifont].FindGlyph("uni1FFE")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFE")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFE.high")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="uni1FFE"
g.unicode=0x1FFE
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# LOWER uni1FBD
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBD")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FC0
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC0")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FC1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC1")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FCD
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCD")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FCE
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCE")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FCF
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCF")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FDD
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDD")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FDE
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDE")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FDF
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDF")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FED
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FED")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FEE
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEE")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FEF
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEF")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FFD
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD")]
g.mark=1
g.Shift(Point(0,-yoffset))

# LOWER uni1FFE
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFE")]
g.mark=1
g.Shift(Point(0,-yoffset))

# COPY - Alpha.fake Alpha
fl[fl.ifont].GenerateGlyph("Alpha.fake")
deja=fl[fl.ifont].FindGlyph("Alpha.fake")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("Alpha.fake")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Alpha")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="Alpha.fake"
g.unicode=63504
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY - Epsilon.fake Epsilon
fl[fl.ifont].GenerateGlyph("Epsilon.fake")
deja=fl[fl.ifont].FindGlyph("Epsilon.fake")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("Epsilon.fake")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Epsilon")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="Epsilon.fake"
g.unicode=63506
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY - Eta.fake Eta
fl[fl.ifont].GenerateGlyph("Eta.fake")
deja=fl[fl.ifont].FindGlyph("Eta.fake")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("Eta.fake")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Eta")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="Eta.fake"
g.unicode=63508
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY - Iota.fake Iota
fl[fl.ifont].GenerateGlyph("Iota.fake")
deja=fl[fl.ifont].FindGlyph("Iota.fake")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("Iota.fake")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Iota")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="Iota.fake"
g.unicode=63510
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY - Omicron.fake Omicron
fl[fl.ifont].GenerateGlyph("Omicron.fake")
deja=fl[fl.ifont].FindGlyph("Omicron.fake")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("Omicron.fake")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Omicron")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="Omicron.fake"
g.unicode=63512
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY - Rho.fake Rho
fl[fl.ifont].GenerateGlyph("Rho.fake")
deja=fl[fl.ifont].FindGlyph("Rho.fake")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("Rho.fake")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Rho")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="Rho.fake"
g.unicode=63514
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY - Upsilon.fake Upsilon
fl[fl.ifont].GenerateGlyph("Upsilon.fake")
deja=fl[fl.ifont].FindGlyph("Upsilon.fake")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("Upsilon.fake")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Upsilon")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="Upsilon.fake"
g.unicode=63516
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# COPY - Omega.fake Omega
fl[fl.ifont].GenerateGlyph("Omega.fake")
deja=fl[fl.ifont].FindGlyph("Omega.fake")
if (deja>0):
	g=fl[fl.ifont][fl[fl.ifont].FindGlyph("Omega.fake")]
	g.Clear()
	g.components.clean()
else: g=Glyph()
g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("Omega")]
if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
g.Assign(g1)
g.name="Omega.fake"
g.unicode=63518
g.mark=1
if deja==-1: fl[fl.ifont].glyphs.append(g)

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni0374")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni0375")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni037A")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03D7")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03D8")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03D9")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03DA")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03DB")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03DC")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03DD")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03DE")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03DF")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03E0")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03E1")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03F2")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03F3")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni03F9")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBD")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBE")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC0")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC1")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCD")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCE")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCF")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDD")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDE")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDF")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FED")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEE")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEF")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFE")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni201F")]
g.mark=100

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBD.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC0.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC1.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCD.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCE.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FCF.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDD.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDE.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FDF.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FED.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEE.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEF.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD.high")]
g.mark=1

# MARK #1
g=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFE.high")]
g.mark=1

# ALIAS 0300 gravecomb uni1FEF 
# (we put a reference to uni1FEF into gravecomb (if it doesn't exist), the new Unicode is 0300)
deja=fl[fl.ifont].FindGlyph("gravecomb")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FEF")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="gravecomb"
	g.unicode=0x0300
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)

# ALIAS 0301 acutecomb uni1FFD 
# (we put a reference to uni1FFD into acutecomb (if it doesn't exist), the new Unicode is 0301)
deja=fl[fl.ifont].FindGlyph("acutecomb")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFD")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="acutecomb"
	g.unicode=0x0301
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)

# ALIAS 0342 uni0342 uni1FC0 
# (we put a reference to uni1FC0 into uni0342 (if it doesn't exist), the new Unicode is 0342)
deja=fl[fl.ifont].FindGlyph("uni0342")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FC0")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="uni0342"
	g.unicode=0x0342
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)

# ALIAS 0345 uni0345 uni037A 
# (we put a reference to uni037A into uni0345 (if it doesn't exist), the new Unicode is 0345)
deja=fl[fl.ifont].FindGlyph("uni0345")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni037A")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="uni0345"
	g.unicode=0x0345
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)

# ALIAS 0313 uni0313 uni1FBD 
# (we put a reference to uni1FBD into uni0313 (if it doesn't exist), the new Unicode is 0313)
deja=fl[fl.ifont].FindGlyph("uni0313")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FBD")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="uni0313"
	g.unicode=0x0313
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)

# ALIAS 0314 uni0314 uni1FFE 
# (we put a reference to uni1FFE into uni0314 (if it doesn't exist), the new Unicode is 0314)
deja=fl[fl.ifont].FindGlyph("uni0314")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("uni1FFE")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="uni0314"
	g.unicode=0x0314
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)

# ALIAS 0308 uni0308 dieresis 
# (we put a reference to dieresis into uni0308 (if it doesn't exist), the new Unicode is 0308)
deja=fl[fl.ifont].FindGlyph("uni0308")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("dieresis")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="uni0308"
	g.unicode=0x0308
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)

# ALIAS 0306 brevecomb breve 
# (we put a reference to breve into brevecomb (if it doesn't exist), the new Unicode is 0306)
deja=fl[fl.ifont].FindGlyph("brevecomb")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("breve")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="brevecomb"
	g.unicode=0x0306
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)

# ALIAS 0304 macroncomb macron 
# (we put a reference to macron into macroncomb (if it doesn't exist), the new Unicode is 0304)
deja=fl[fl.ifont].FindGlyph("macroncomb")
if (deja<0):
	g=Glyph()
	g1=fl[fl.ifont][fl[fl.ifont].FindGlyph("macron")]
	if len(g1.components)>0: g1=fl[fl.ifont][g1.components[0].index]
	c1=Component(g1.index)
	g.components.append(c1)
	g.name="macroncomb"
	g.unicode=0x0304
	g.mark=100
	g.width=g1.width
	fl[fl.ifont].glyphs.append(g)
fl.UpdateFont()
