%
% An example logo character. Building the PostScript program that prints
% your company logo is not addressed here; we assume you already have
% such a program, that it's relatively simple, and that it prints the
% logo by itself on a page. What you'll find here are instructions for
% converting that logo program into a character that can be accessed by
% troff and dpost.
%
% Building a new charlib character involves some PostScript programming.
% We've tried to isolate parameters that you'll need to change (Xoffset,
% Yoffset, and Scaling), but we can't guarantee things will work properly
% with every logo program. PostScript is a complex language and subtle
% interactions between your logo program and what we've done here can
% cause problems.
%
% Tuning the new character is an iterative process. You may want to adjust
% the size of the logo (via Scaling), it's position relative to adjacent
% characters and the baseline (Xoffset and Yoffset), and the distance troff
% moves after printing the character (width field in file ../S1). The steps
% to follow are:
%
%	1: Create a simple troff test file for the new character. Something
%	   like,
%
%		.sp 1i
%		.ps 10
%		size 10: \(LH
%		.sp 1i
%		.ps 18
%		size 18: \(LH
%		.sp 1i
%		.ps 36
%		size 36: \(LH
%		.sp 1i
%		.ps 10
%		four logo characters: \(LH\(LH\(LH\(LH
%
%	   is sufficient. The test file can go anywhere.
% 
%	2: Change into directory /usr/lib/font/devpost/charlib. All file
%	   pathnames will be relative to that directory.
%
%	3: Save a copy of the working LH logo file. Then replace LH with
%	   this file (i.e. LH.example). Changes described below should be
%	   be made in the new LH file (not in LH.example).
%
%	4: Your PostScript logo program will eventually replace whatever
%	   you find between the <<StartLogo>> and <<EndLogo>> comment lines
%	   in the PostScript build_LH procedure (below). What's there now
%	   prints an example logo that you can use until you understand the
%	   remaining steps.
%
%	5: Print your troff test file using (assuming your making changes
%	   in the devpost charlib directory),
%
%		troff -Tpost testfile | dpost | lp ...
%
%	6: Adjust the logo positioning by changing the numbers assigned to
%	   Xoffset and Yoffset (below). Both are in units of 72 per inch.
%	   Positive offsets should move the logo to the right and up the
%	   page.
%
%	7: Adjust the logo size by changing the the number assigned to
%	   Scaling. Unitsize also controls scaling, but there's no good
%	   reason to change both Scaling and Unitsize.
%
%	8: Control the horizontal distance troff moves after printing the
%	   new LH character by changing the width (i.e. the number in the
%	   second column) assigned to LH in file ../S1. Character width
%	   adjustments should probably wait until you're satisfied with
%	   the Scaling set in step 7.
%
%	9: Back to step 5 until your satisfied with the output.
%
% The remaining steps are suggested but not required:
%
%      10: Delete PostScript comments in your new LH charlib file - comments
%	   start with % and go to the end of the line.
%
%      11: Update the width field assigned to LH in file ../shell.lib. The
%	   new width should reflect what's currently in your S1 font file.
%
%      12: Make a similiar set of changes in /usr/lib/font/devLatin1/charlib.
%	   You can use the devpost version of LH to devLatin1/charlib/LH,
%	   but changes to files devLatin1/S1 and devLatin1/shell.lib must be
%	   entered by hand.
%

/Logo_Dict 100 dict dup begin
	/Xoffset 0 def			% 72 dpi with positive to the right
	/Yoffset 0 def			% 72 dpi with positive up the page
	/Scaling 1.0 def		% adjust this number to change the size
	/Unitsize 36 def		% for point size scaling - leave it be
	/showpage {} def
end def

/build_LH {				% don't bind this procedure
	Logo_Dict begin
		gsave
		/charwidth exch def
		currentpoint translate
		resolution 72 div dup scale
		Xoffset Yoffset translate
		Scaling Scaling scale
		ptsize Unitsize div dup scale

		%% Replace everything between the <<StartLogo>> and <<EndLogo>>
		%% comment lines by the PostScript program that prints your
		%% logo.

		%% <<StartLogo>>
			newpath
			.5 .5 scale
			0 0 moveto
			100 0 lineto
			100 100 lineto
			closepath
			.5 setgray
			fill
			0 setgray
			10 10 translate
			45 rotate
			0 5 moveto
			/Helvetica findfont 18 scalefont setfont
			(Example Logo) show
		%% <<EndLogo>>

		grestore
	end
} def

