
  %% accents.mf
  %% Copyright 2005 Laurie Field
  %
  % This work is LFB, version 1.0.
  %
  % This work may be distributed and/or modified under the
  % conditions of the LaTeX Project Public License, either version 1.3
  % of this license or (at your option) any later version.
  % The latest version of this license is in
  %   http://www.latex-project.org/lppl.txt
  % and version 1.3 or later is part of all distributions of LaTeX
  % version 2003/12/01 or later.
  %
  % This work has the LPPL maintenance status "maintained".
  % 
  % This Current Maintainer of this work is Laurie Field.
  %
  % This work consists of the files:
  %   
  %   example.tex
  %   lfbacc.tex
  %   
  %   accents.mf
  %   alpha.mf
  %   beta.mf
  %   capitals.mf
  %   charmap.mf
  %   delta.mf
  %   epsilon.mf
  %   eta.mf
  %   gamma.mf
  %   iota.mf
  %   kappa.mf
  %   khi.mf
  %   lambda.mf
  %   lfb.mf
  %   lfb5.mf
  %   lfb6.mf
  %   lfb7.mf
  %   lfb8.mf
  %   lfb9.mf
  %   lfb10.mf
  %   lfb11.mf
  %   lfb12.mf
  %   lfbb5.mf
  %   lfbb6.mf
  %   lfbb7.mf
  %   lfbb8.mf
  %   lfbb9.mf
  %   lfbb10.mf
  %   lfbb11.mf
  %   lfbb12.mf
  %   ligature.mf
  %   mu.mf
  %   nu.mf
  %   omega.mf
  %   omikron.mf
  %   others.mf
  %   phi.mf
  %   pi.mf
  %   psi.mf
  %   rho.mf
  %   serifs.mf
  %   sigma.mf
  %   sigmafin.mf
  %   tau.mf
  %   theta.mf
  %   upsilon.mf
  %   xi.mf
  %   zeta.mf
  %   
  % and the derived files:
  %   
  %   lfb5.tfm
  %   lfb6.tfm
  %   lfb7.tfm
  %   lfb8.tfm
  %   lfb9.tfm
  %   lfb10.tfm
  %   lfb11.tfm
  %   lfb12.tfm
  %   lfbb5.tfm
  %   lfbb6.tfm
  %   lfbb7.tfm
  %   lfbb8.tfm
  %   lfbb9.tfm
  %   lfbb10.tfm
  %   lfbb11.tfm
  %   lfbb12.tfm
  %   
  %   lfb5.600pk
  %   lfb6.600pk
  %   lfb7.600pk
  %   lfb8.600pk
  %   lfb9.600pk
  %   lfb10.600pk
  %   lfb11.600pk
  %   lfb12.600pk
  %   lfbb5.600pk
  %   lfbb6.600pk
  %   lfbb7.600pk
  %   lfbb8.600pk
  %   lfbb9.600pk
  %   lfbb10.600pk
  %   lfbb11.600pk
  %   lfbb12.600pk
  %

% Every character that wishes to use these accents should
% define accent_centre (numeric) to be the x coordinate
% around which the accent should be centred.


def acc_smooth =
	penpos101(thick, 90);
	penpos102(medthin, 0);
	penpos103(thin, -90);
	z100=z101+(4/3(z101l-z101) rotated -60);
	y103r=x_height+.85u;
	y102=y103l+.85u;
	y101l=y102+.7u;
	x100=accent_centre-1/2breathingwidth;
	x102r=x100+breathingwidth;
	x103=x100+1/3breathingwidth;
	fill z100..z101l..z102l..{dir -150}z103l
		--z103r{dir 30}..z102r..{left}z101r..cycle;
enddef;


def acc_rough =
	penpos111(thick, -90);
	penpos112(medthin, 0);
	penpos113(thin, 90);
	z110=z111+(4/3(z111l-z111) rotated -120);
	y113l=x_height+.85u;
	y112=y113r+.85u;
	y111r=y112+.7u;
	x110=x112l+breathingwidth;
	x112l=accent_centre-1/2breathingwidth;
	x113=x112l+2/3breathingwidth;
	fill z110..z111l..z112l..{dir -30}z113l
		--z113r{dir 150}..z112r..{right}z111r..cycle;
enddef;


def acc_acute =
	penpos121(thick, acuteangle-90);
	penpos122(thin, acuteangle-90);
	z120=z121+((z121l-z121) rotated -90);
	z123=z122+((z122l-z122) rotated 90);
	y123=x_height+.85u;
	y120=y123+1.55u+thick+thin;
	x122=accent_centre;
	z310=dir acuteangle;
	(x121-x122)/x310=(y121-y122)/y310;
	fill z120..z121l---z122l..z123..z122r---z121r..cycle;
enddef;


def acc_grave =
	penpos131(thick, graveangle-90);
	penpos132(thin, graveangle-90);
	z130=z131+((z131l-z131) rotated -90);
	z133=z132+((z132l-z132) rotated 90);
	y133=x_height+.85u;
	y130=y133+1.55u+thick+thin;
	x132=accent_centre;
	z310=dir graveangle;
	(x131-x132)/x310=(y131-y132)/y310;
	fill z130..z131l---z132l..z133..z132r---z131r..cycle;
enddef;


def acc_circ =
	penpos141(thin, 80);
	penpos142(medium, 90);
	penpos143(medium, 90);
	penpos144(thin, 80);
	y141l=x_height+thick;
	y143l=y141l+tiny;
	y142l=y141l+medium;
	y144r=y142r+tiny;
	x141=accent_centre-1/2circwidth;
	x144=accent_centre+1/2circwidth;
	x142=1/4[x141, x144];
	x143=3/4[x141, x144];
	penstroke z141e..z142e..z143e..z144e;
enddef;


def mini_circ =
	penpos141(thin, 80);
	penpos142(medium, 90);
	penpos143(medium, 90);
	penpos144(thin, 80);
	y141l=x_height+4u;
	y143l=y141l+tiny;
	y142l=y141l+medium;
	y144r=y142r+tiny;
	x141=accent_centre-1/2circwidth;
	x144=accent_centre+1/2circwidth;
	x142=1/4[x141, x144];
	x143=3/4[x141, x144];
	penstroke z141e..z142e..z143e..z144e;
enddef;


def acc_smoothacute =
	accent_centre:=accent_centre-breathingwidth/2-tiny;
	acc_smooth;
	accent_centre:=accent_centre+breathingwidth/2+medium;
	acc_acute;
enddef;


def acc_smoothgrave =
	accent_centre:=accent_centre-breathingwidth/2-tiny;
	acc_smooth;
	accent_centre:=accent_centre+breathingwidth/2+2u;
	
	penpos131(thick, graveangle-100);
	penpos132(thin, graveangle-100);
	z130=z131+((z131l-z131) rotated -90);
	z133=z132+((z132l-z132) rotated 90);
	y133=x_height+.85u;
	y130=y133+1.55u+thick+thin;
	x132=accent_centre;
	z310=dir (graveangle-10);
	(x131-x132)/x310=(y131-y132)/y310;
	fill z130..z131l---z132l..z133..z132r---z131r..cycle;
enddef;


def acc_smoothcirc =
	numeric rc;
	rc := 5/6;
	penpos101(rc*thick, 90);
	penpos102(rc*medthin, 0);
	penpos103(rc*thin, -90);
	z100=z101+(4/3(z101l-z101) rotated -60);
	y103r=x_height+.85u;
	y102=y103l+rc*.85u;
	y101l=y102+rc*.7u;
	x100=accent_centre-rc*1/2breathingwidth;
	x102r=x100+rc*breathingwidth;
	x103=x100+rc*1/3breathingwidth;
	fill z100..z101l..z102l..{dir -150}z103l
		--z103r{dir 30}..z102r..{left}z101r..cycle;
	
	mini_circ;
enddef;


def acc_roughacute =
	accent_centre:=accent_centre-breathingwidth/2-tiny;
	acc_rough;
	accent_centre:=accent_centre+breathingwidth/2+medium;
	acc_acute;
enddef;


def acc_roughgrave =
	accent_centre:=accent_centre-breathingwidth/2-tiny;
	acc_rough;
	accent_centre:=accent_centre+breathingwidth/2+2u;
	
	penpos131(thick, graveangle-100);
	penpos132(thin, graveangle-100);
	z130=z131+((z131l-z131) rotated -90);
	z133=z132+((z132l-z132) rotated 90);
	y133=x_height+.85u;
	y130=y133+1.55u+thick+thin;
	x132=accent_centre;
	z310=dir (graveangle-10);
	(x131-x132)/x310=(y131-y132)/y310;
	fill z130..z131l---z132l..z133..z132r---z131r..cycle;
enddef;


def acc_roughcirc =
	numeric rc;
	rc := 5/6;
	penpos111(rc*thick, -90);
	penpos112(rc*medthin, 0);
	penpos113(rc*thin, 90);
	z110=z111+(4/3(z111l-z111) rotated -120);
	y113l=x_height+.85u;
	y112=y113r+rc*.85u;
	y111r=y112+rc*.7u;
	x110=x112l+rc*breathingwidth;
	x112l=accent_centre-rc*1/2breathingwidth;
	x113=x112l+rc*2/3breathingwidth;
	fill z110..z111l..z112l..{dir -30}z113l
		--z113r{dir 150}..z112r..{right}z111r..cycle;
	
	mini_circ;
enddef;


def acc_diaer =
	numeric diameter;
	diameter=6/7quotewidth;
	
	x151 = x152+1/2diameter = x153 = x154-1/2diameter
		= accent_centre - 1.5u;
	x155 = x156+1/2diameter = x157 = x158-1/2diameter
		= accent_centre + 1.5u;
	y151-1/2diameter = y152 = y153+1/2diameter = y154
		= y155-1/2diameter = y156 = y157+1/2diameter = y158
		= x_height+2u;
	
	fill z151..z152..z153..z154..cycle;
	fill z155..z156..z157..z158..cycle;
enddef;


def acc_diaeracute =
	numeric diameter;
	diameter=6/7quotewidth;
	
	x151 = x152+1/2diameter = x153 = x154-1/2diameter
		= accent_centre - 2u;
	x155 = x156+1/2diameter = x157 = x158-1/2diameter
		= accent_centre + 2u;
	y151-1/2diameter = y152 = y153+1/2diameter = y154
		= y155-1/2diameter = y156 = y157+1/2diameter = y158
		= x_height+2u;
	
	fill z151..z152..z153..z154..cycle;
	fill z155..z156..z157..z158..cycle;
	
	penpos121(thick, acuteangle-90);
	penpos122(thin, acuteangle-90);
	z120=z121+((z121l-z121) rotated -90);
	z123=z122+((z122l-z122) rotated 90);
	y123=x_height+.85u;
	y120=y123+1.55u+thick+thin;
	x122=accent_centre-.5u;
	z310=dir acuteangle;
	(x121-x122)/x310=(y121-y122)/y310;
	fill z120..z121l---z122l..z123..z122r---z121r..cycle;
enddef;


def acc_diaergrave =
	numeric diameter;
	diameter=quotewidth;
	
	x151 = x152+1/2diameter = x153 = x154-1/2diameter
		= accent_centre - 2u;
	x155 = x156+1/2diameter = x157 = x158-1/2diameter
		= accent_centre + 2u;
	y151-1/2diameter = y152 = y153+1/2diameter = y154
		= y155-1/2diameter = y156 = y157+1/2diameter = y158
		= x_height+2u;
	
	fill z151..z152..z153..z154..cycle;
	fill z155..z156..z157..z158..cycle;
	
	penpos131(thick, graveangle-90);
	penpos132(thin, graveangle-90);
	z130=z131+((z131l-z131) rotated -90);
	z133=z132+((z132l-z132) rotated 90);
	y133=x_height+.85u;
	y130=y133+1.55u+thick+thin;
	x132=accent_centre+.5u;
	z310=dir graveangle;
	(x131-x132)/x310=(y131-y132)/y310;
	fill z130..z131l---z132l..z133..z132r---z131r..cycle;
enddef;


def acc_breve =
	penpos161(thin, 0);
	penpos162(medium, 90);
	penpos163(thin, 180);
	
	y161=y163=ascender;
	y162l=x_height+1u;
	x161l=x162-1/2circwidth;
	x163l=x162+1/2circwidth;
	x162=accent_centre;
	
	penstroke z161e{down}..z162e..{up}z163e;
enddef;


def acc_macron =
	penpos171(medium, 90);
	penpos172(medium, 90);
	
	y171l=y172l=x_height+1.2u;
	x171=accent_centre-1/2circwidth;
	x172=accent_centre+1/2circwidth;
	
	penstroke z171e--z172e;
enddef;


def acc_iotasub =
	penpos181(medium, 0);
	penpos182(medium, 0);
	penpos183(medthin, 90);
	
	x181=x182=accent_centre;
	x183=x182r+tiny;
	y181=0-medthin;
	y182=y183r+tiny;
	y183l=0-descender-thin;
	z184=z183+((z183l-z183) rotated 120);
	
	fill z181l---z182l..z183l..z184..z183r..z182r---z181r--cycle;
enddef;



width#:=breathingwidth#;
extra#:=2letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_smooth;
enddef;

beginchar(smooth, width#+extra#, ascender#, 0);
gen_letter; penlabels(100,101,102,103);
endchar;


width#:=breathingwidth#;
extra#:=2letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_rough;
enddef;

beginchar(rough, width#+extra#, ascender#, 0);
gen_letter; penlabels(110,111,112,113);
endchar;


width#:=3u#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width-1u;
	acc_acute;
enddef;

beginchar(acute, width#+extra#, ascender#, 0);
gen_letter; penlabels(120,121,122,123);
endchar;


width#:=3u#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_grave;
enddef;

beginchar(grave, width#+extra#, ascender#, 0);
gen_letter; penlabels(130,131,132,133);
endchar;


width#:=circwidth#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_circ;
enddef;

beginchar(circ, width#+extra#, ascender#, 0);
gen_letter; penlabels(140,141,142,143,144);
endchar;


width#:=1.5u#+2thin#+breathingwidth#;
extra#:=2letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_smoothacute;
enddef;

beginchar(smoothacute, width#+extra#, ascender#, 0);
gen_letter;
endchar;


width#:=1.5u#+2thin#+breathingwidth#;
extra#:=2letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_smoothgrave;
enddef;

beginchar(smoothgrave, width#+extra#, ascender#, 0);
gen_letter;
endchar;


width#:=3/4circwidth#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_smoothcirc;
enddef;

beginchar(smoothcirc, width#+extra#, ascender#, 0);
gen_letter;
endchar;


width#:=1.5u#+2thin#+breathingwidth#;
extra#:=2letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_roughacute;
enddef;

beginchar(roughacute, width#+extra#, ascender#, 0);
gen_letter;
endchar;


width#:=1.5u#+2thin#+breathingwidth#;
extra#:=2letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_roughgrave;
enddef;

beginchar(roughgrave, width#+extra#, ascender#, 0);
gen_letter;
endchar;


width#:=3/4circwidth#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_roughcirc;
enddef;

beginchar(roughcirc, width#+extra#, ascender#, 0);
gen_letter;
endchar;


width#:=quotewidth#+3u#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_diaer;
enddef;

beginchar(diaer, width#+extra#, ascender#, 0);
gen_letter; penlabels(151,152,153,154,155,156,157,158);
endchar;


width#:=quotewidth#+4u#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_diaeracute;
enddef;

beginchar(diaeracute, width#+extra#, ascender#, 0);
gen_letter;
endchar;


width#:=quotewidth#+4u#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_diaergrave;
enddef;

beginchar(diaergrave, width#+extra#, ascender#, 0);
gen_letter;
endchar;


width#:=circwidth#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_breve;
enddef;

beginchar(breve, width#+extra#, ascender#-macronbreveshorter#, 0);
gen_letter; penlabels(161,162,163);
endchar;


width#:=circwidth#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_macron;
enddef;

beginchar(macron, width#+extra#, ascender#-macronbreveshorter#, 0);
gen_letter; penlabels(171,172);
endchar;


width#:=2u#;
extra#:=1letterspace#;
define_pixels(width, extra);

def gen_letter =
	numeric accent_centre;
	accent_centre=1/2width;
	acc_iotasub;
enddef;

beginchar(iotasub, width#+extra#, 0, descender#);
gen_letter; penlabels(181,182,183,184);
endchar;
