% File:       MF Inputs grkpnct.mf
% Author:     Pierre A. MacKay
% Internet:   mackay@cs.washington.edu
% Date:       Friday, 06 May 1994
% Copyright 1994 by Pierre A. MacKay
% The contents of this file are licensed free for
% use and redistribution under the terms of the  
% GNU General Public License.  For the terms of  
% this license see any publication of the Free   
% Software Foundation or any software packages   
% distributed by the Free Software Foundation.   
% 
%
% Select from Computer Modern punctuation.
%
def selectpunct expr t =
  currenttitle:= t;
  if t = "Hash mark (number sign)" : let next_ = lose_it_
  elseif t = "At sign" : let next_ = lose_it_
  elseif t = "Semicolon" : 
	code_offset := ASCII"?" - ASCII";"; let next_ = use_it_
  elseif t = "Apostrophe" : 
	code_offset := oct"035" - ASCII"'"; let next_ = use_it_
  elseif t = "Reverse apostrophe" : 
	code_offset := oct"034" - ASCII"`"; let next_ = use_it_
  else: code_offset := 0; let next_ = use_it_ fi; next_ enddef;

% 
% Get the endash and emdash
% (Maybe the double quotes should be added in some spare space.)
%
def selectcomlig expr t =
  currenttitle:= t;
  if t = "Closing quotes" : let next_ = lose_it_
  elseif t = "Opening quotes" : let next_ = lose_it_
  elseif t = "En dash" : 
    code_offset := en_dash - oct"173"; let next_ = use_it_
  elseif t = "Em dash" : 
    code_offset := em_dash - ASCII"|"; let next_ = use_it_
  else: code_offset := 0; let next_ = use_it_ fi; next_ enddef;

%
% The specifically Greek additions to punctuation
%
def selectgkpunct expr t =
  currenttitle:= t;
  if t = "'Anw tele'ia" : let next_ = use_it_
  elseif t = "Open quotes (eisagwgik'a)" : let next_ = use_it_
  elseif t = "Close quotes (eisagwgik'a)" : let next_ = use_it_
  else: let next_ = lose_it_ fi; next_ enddef;

% Use Computer modern characters for as many signs as possible.

let cmchar = selectpunct;
input punct
let ligtable_ = ligtable;
let ligtable = lose_it_; % Only works because we want to skip over
                         % the first character in this file too
let cmchar = selectcomlig;
input comlig
let cmchar = relax;
let ligtable = ligtable_;

code_offset := 0;

% Now do the special Greek punctuation.
% For the << >> quotation marks keep a consistent symbolic identity
% over a wide range of fonts.  Adobe standard encoding gives these
% the strikingly ornithological names "guillemot[right,left]".
% (I believe this must be a sub-species of the awk family.)
% In ibygrk.map the names are guillemotleft, guillemotright and
% colongreek
%
let cmchar = selectgkpunct;
readfrom("grpunct")
let cmchar = relax;


