% This is ATARI.MF, the mode definition file for the ATARI ST MetaFont.
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                          %
%  PLEASE NOTE: After any change in this file you must again               %
%               generate a new version of all base files                   %
%                                                                          %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
% Version 2.0  (AUG 1990): Added 'art.mf' specials. Cleaned up some
%                          parameters. Added many new modes at the end.
%                          Improved explaination of mode parameters.
% Version 2.1  (SEP 1990): Added experimental 'deskjet' mode.
% Version 2.2  (OCT 1990): Added 'canon_bj' modes.
% Version 2.3  (AUG 1991): Added 'nec_p_two' modes.
% Version 2.4  (FEB 1992): Added some comments
% Version 2.5  (JUL 1993): Added laserjet_md and _hd modes
%
% Mode definitions parameters (\MetaFont book, chapter 11):
%
% blacker : if font is too light, make it a little bit blacker
%           try 0 first, then 0.2, then other values until the
%           fonts look black enough. The value should not be negative.
%
% fillin : Represents the amount by which diagonal strokes tend to be
%          darker than horizontal or vertical strokes.
%          (normally  0 <= fillin < 0.3)
%
%          Check this value with the 'line' and 'circle' fonts. The value
%          is Ok when horizontal, vertical and diagonal lines all appear
%          with the same darkness.
%
% o_correction : Correction for overshoot. 0.1 <= o_correction <= 1
%                Normally select higher values for higher resolution
%                and lower values for lower resolution devices
%
% >>> If you want to change definitions, 'blacker' is the only thing you
% >>> normally may want to change.
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                          %
%  PLEASE NOTE: After any change in this file you must again               %
%               generate a new version of all base files                   %
%                                                                          %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%

base_version:=base_version&"/Atari";

%%%% Screen mode for the previewer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%
% IniMF 2.7 // 2.5cs sets the following default values:
%
% screen_cols:=640; screen_rows:=800;  % ******* DO NOT CHANGE THIS ! *******
%

mode_def atari=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=96;
 blacker:=0;
 fillin:=0;
 o_correction:=0.1;
enddef;

%%%% Canon BJ-130 ink jet printer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

mode_def canon_bj_low=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=180;
 blacker:=0.6;
 fillin:=0.2;
 o_correction:=0.65;
enddef;

mode_def canon_bj=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=360;
 blacker:=0.6;
 fillin:=0.2;
 o_correction:=0.65;
enddef;

%%% NEC P6 24-pin printer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

mode_def nec_p_six=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=180;
 blacker:=0.1;
 fillin:=0.1;
 o_correction:=0.3;
enddef;

mode_def nec_p_six_md=       % these `mixed' fonts don't look very good
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=360;
 aspect_ratio:=180/360;
 blacker:=0;
 fillin:=0.2;
 o_correction:=0.65;
enddef;

mode_def nec_p_six_hd=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=360;
 blacker:=0;
 fillin:=0.2;
 o_correction:=0.65;
enddef;

%%% NEC P2 18-pin printer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%
% Please note: The NEC P2 is a very old 18-pin-printer which is
%              *not* compatible to the 24-pin NEC P2200, P2+, and P20.
%

mode_def nec_p_two=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=120;
 blacker:=0.1;
 fillin:=0.1;
 o_correction:=0.3;
enddef;

mode_def nec_p_two_md=       % these `mixed' fonts don't look very good
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=240;
 aspect_ratio:=120/240;
 blacker:=0;
 fillin:=0.2;
 o_correction:=0.65;
enddef;

mode_def nec_p_two_hd=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=240;
 blacker:=0;
 fillin:=0.2;
 o_correction:=0.65;
enddef;

%%%% HP LaserJet laser printer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

mode_def laserjet_low=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=150;
 blacker:=0;
 fillin:=0.1;
 o_correction:=0.3;
enddef;

mode_def laserjet=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=300;
 blacker:=0;
 fillin:=0.1;
 o_correction:=0.6;
enddef;

mode_def laserjet_md=       % these `mixed' fonts don't look very good
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=600;
 aspect_ratio:=300/600;
 blacker:=0;
 fillin:=0.1;
 o_correction:=0.6;
enddef;

mode_def laserjet_hd=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=600;
 blacker:=0;
 fillin:=0.1;
 o_correction:=1;
enddef;

%%%% HP DeskJet ink jet printer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% You may eventually find these fonts too thick. But the DeskJet can also
% be used with the thinner LaserJet fonts.

mode_def deskjet=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=300;
 blacker:=0.6;
 fillin:=0.1;
 o_correction:=0.6;
enddef;

%%%% EPSON FX-80 family 9-pin printers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

mode_def fx_eighty=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=240;
 aspect_ratio:=216/240;
 blacker:=0;
 fillin:=0.1;
 o_correction:=0.5;
enddef;

mode_def fx_fast=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=80;
 aspect_ratio:=72/80;
 blacker:=0;
 fillin:=0.1;
 o_correction:=0.2;
enddef;

mode_def rx_eighty=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=120;
 aspect_ratio:=144/120;
 blacker:=0.1;
 fillin:=0.1;
 o_correction:=0.3;
enddef;

mode_def mx_eighty=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=60;
 aspect_ratio:=72/60;
 blacker:=0;
 fillin:=0.1;
 o_correction:=0.2;
enddef;

%%%% Linotype Linotronic 300 page setter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% These linotype modes are very experimental !

mode_def linotype_low=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=635;
 blacker:=0;
 fillin:=0;
 o_correction:=1;
enddef;

mode_def linotype=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=1270;
 blacker:=0;
 fillin:=0;
 o_correction:=1;
enddef;

mode_def linotype_high=
 proofing:=0;
 fontmaking:=1;
 tracingtitles:=0;
 pixels_per_inch:=2540;
 blacker:=0;
 fillin:=0;
 o_correction:=1;
enddef;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The following was stolen from 'art.mf' and 'waits.mf'.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Macros to add mode information specials to fonts. (by Pierre MacKay)

def mode_special(suffix $) =
  string s,d;
  s:=str$; d:=decimal scantokens s;
  special s&":="&d&";" enddef;

def font_mode_specials =
 p_p_i=pixels_per_inch/mag; 
 if fontmaking > 0:
 begingroup; save d,s,p; save pixels_per_inch;
  string p;
  pixels_per_inch:=p_p_i;
  special jobname;
  mode_special(mag);
  if string mode: p:=mode;
  else: p:=substring(0,length(mode_name[mode])-1) of mode_name[mode]; fi
  special "mode:="&p&";";
  mode_special(pixels_per_inch);
  mode_special(blacker);
  mode_special(fillin);
  mode_special(o_correction);
 endgroup;
 fi
enddef;

% Macros for Xerox-world font info:

def font_family expr s =  % string s names the font family, e.g., "CMR"
 headerbyte 49: BCPL_string(s,20);
 special "identifier "&s enddef;
def coding_scheme expr s = % string s names the scheme, e.g. "TEX TEXT"
 headerbyte 9: BCPL_string(s,40);
 special "codingscheme "&s enddef;
def font_face_byte expr x = % integer x gives the family member number,
 headerbyte 72: x;          % which should be between 0 and 255
 special "fontfacebyte"; numspecial x enddef;

def BCPL_string(expr s,n)= % string s becomes an n-byte BCPL string
 for l:=if length(s)>=n: n-1 else: length(s) fi: l
  for k:=1 upto l: , substring (k-1,k) of s endfor
  for k:=l+2 upto n: , 0 endfor endfor enddef;

Xerox_world:=1;    % users can say `if known Xerox_world:...fi'

inner end;
def bye=
 if fontmaking>0: font_family font_identifier_;
  coding_scheme font_coding_scheme_;
  font_face_byte max(0,254-round 2designsize);
  font_mode_specials; fi
 end
 enddef;

outer bye,end;

%%%%%%%%%%%%%%%%%%% Local setup %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

localfont:=atari;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% You may end the input here, if you do not need the following modes
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% endinput;  % comment out to get the following modes

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Here are some collected modes from various sources
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%% modes from 'waits.mf' (1986) %%%%%%%%

mode_def dover =  % dover mode: for the Xerox Dover
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=384;
 blacker:=1.2;        % make pens somewhat blacker
 fillin:=0;           % no compensation for fillin
 o_correction:=.6;    % but don't overshoot as much
 enddef;

% imagen is for laser printers with canon engine

mode_def imagen = % imagen mode: for the Imagen 8/300 (Canon engine)
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=300;
 blacker:=0;          % Canon engine is black enough
 fillin:=.2;          % and it tends to fill in diagonals
 o_correction:=.6;    %
 enddef;

% qms is for laser printers with xerox engine

mode_def qms =    % qms mode: for the QMS (Xerox engine)
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=300;
 blacker:=.75;        % (this value is conjectural)
 fillin:=0;           % (ditto)
 o_correction:=.5;    % (ditto)
 enddef;

mode_def aps =    % aps mode: for the Autologic APS-Micro5
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=722.909;    % that's roughly 10 per pt
 blacker:=.2;         % make pens a teeny bit blacker
 fillin:=.2;          % but compensate for diagonal fillin
 o_correction:=1;     % and keep the full overshoot
 enddef;

mode_def crs =    % crs mode: for the Alphatype CRS
  proofing:=0;        % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 begingroup interim warningcheck:=0;  % (we need to go past 4096)
  pixels_per_inch:=4000+4000/3 endgroup;  % HIGH res
 blacker:=4;          % make pens a lot blacker
 fillin:=0;           % but don't compensate for fillin
 o_correction:=1;     % and keep the full overshoot
 enddef;

mode_def boise =  % boise mode: for the HP 2680A
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=180;
 blacker:=.55;        % make pens a bit blacker
 fillin:=.1;          % and compensate for diagonal fillin
 o_correction:=.3;    % but don't overshoot much
 enddef;

mode_def DD =     % DD mode: for the DataDisc (usually with mag=magstep 2=1.44)
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=70; % really lowres
 blacker:=0;          % don't make the pens any blacker
 fillin:=0;           % and don't compensate for fillin
 o_correction:=.2;    % but suppress most overshoots
 enddef;

mode_def canon =  % canon mode: for the old Imagen (Canon LBP10)
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=240;
 blacker:=.2;         % make pens a wee bit blacker
 fillin:=.2;          % and compensate for fillin
 o_correction:=.4;    % but don't overshoot as much
 enddef;

mode_def newDD =  % newDD mode: for DataDisc with special aspect ratio
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=70; % really lowres
 blacker:=0;          % don't make the pens any blacker
 fillin:=0;           % and don't compensate for fillin
 o_correction:=.2;    % but suppress most overshoots
 aspect_ratio:=4/3;   % this is the new feature...
 enddef;

mode_def cg =     % cg mode: for the Compugraphic 8600
 proofing:=0;         % no, we're not making proofs
 fontmaking:=1;       % yes, we are making a font
 tracingtitles:=0;    % no, don't show titles in the log
 pixels_per_inch:=1301.5;    % a bit less than 20 per pt
 blacker:=.2;         % make pens a teeny bit blacker
 fillin:=.2;          % but compensate for diagonal fillin
 o_correction:=1;     % and keep the full overshoot
 aspect_ratio:=1569/1301.5;    % strange, no?
 enddef;


%%%%%%%% mode from Pierre MacKay mail (1986) %%%%%%%%

% Adobe mode: for the Laser-writer at 300 pixels per inch
mode_def adobe =
 proofing:=0;          % no, we're not making proofs
 fontmaking:=1;        % yes, we are making a font
 tracingtitles:=0;     % no, don't show titles at all
 pixels_per_inch:=300; % the new Canon engine at 300/inch
 blacker:=0.25;        % make pens a bit blacker
 fillin:=0.15;         % compensate for diagonal fillin
 o_correction:=.4;     % but don't overshoot as much
 enddef;

% -eof-
