LH.example - 9base - revived minimalist port of Plan 9 userland to Unix
  HTML git clone git://git.suckless.org/9base
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       LH.example (4433B)
       ---
            1 %
            2 % An example logo character. Building the PostScript program that prints
            3 % your company logo is not addressed here; we assume you already have
            4 % such a program, that it's relatively simple, and that it prints the
            5 % logo by itself on a page. What you'll find here are instructions for
            6 % converting that logo program into a character that can be accessed by
            7 % troff and dpost.
            8 %
            9 % Building a new charlib character involves some PostScript programming.
           10 % We've tried to isolate parameters that you'll need to change (Xoffset,
           11 % Yoffset, and Scaling), but we can't guarantee things will work properly
           12 % with every logo program. PostScript is a complex language and subtle
           13 % interactions between your logo program and what we've done here can
           14 % cause problems.
           15 %
           16 % Tuning the new character is an iterative process. You may want to adjust
           17 % the size of the logo (via Scaling), it's position relative to adjacent
           18 % characters and the baseline (Xoffset and Yoffset), and the distance troff
           19 % moves after printing the character (width field in file ../S1). The steps
           20 % to follow are:
           21 %
           22 %        1: Create a simple troff test file for the new character. Something
           23 %           like,
           24 %
           25 %                .sp 1i
           26 %                .ps 10
           27 %                size 10: \(LH
           28 %                .sp 1i
           29 %                .ps 18
           30 %                size 18: \(LH
           31 %                .sp 1i
           32 %                .ps 36
           33 %                size 36: \(LH
           34 %                .sp 1i
           35 %                .ps 10
           36 %                four logo characters: \(LH\(LH\(LH\(LH
           37 %
           38 %           is sufficient. The test file can go anywhere.
           39 % 
           40 %        2: Change into directory /usr/lib/font/devpost/charlib. All file
           41 %           pathnames will be relative to that directory.
           42 %
           43 %        3: Save a copy of the working LH logo file. Then replace LH with
           44 %           this file (i.e. LH.example). Changes described below should be
           45 %           be made in the new LH file (not in LH.example).
           46 %
           47 %        4: Your PostScript logo program will eventually replace whatever
           48 %           you find between the <<StartLogo>> and <<EndLogo>> comment lines
           49 %           in the PostScript build_LH procedure (below). What's there now
           50 %           prints an example logo that you can use until you understand the
           51 %           remaining steps.
           52 %
           53 %        5: Print your troff test file using (assuming your making changes
           54 %           in the devpost charlib directory),
           55 %
           56 %                troff -Tpost testfile | dpost | lp ...
           57 %
           58 %        6: Adjust the logo positioning by changing the numbers assigned to
           59 %           Xoffset and Yoffset (below). Both are in units of 72 per inch.
           60 %           Positive offsets should move the logo to the right and up the
           61 %           page.
           62 %
           63 %        7: Adjust the logo size by changing the the number assigned to
           64 %           Scaling. Unitsize also controls scaling, but there's no good
           65 %           reason to change both Scaling and Unitsize.
           66 %
           67 %        8: Control the horizontal distance troff moves after printing the
           68 %           new LH character by changing the width (i.e. the number in the
           69 %           second column) assigned to LH in file ../S1. Character width
           70 %           adjustments should probably wait until you're satisfied with
           71 %           the Scaling set in step 7.
           72 %
           73 %        9: Back to step 5 until your satisfied with the output.
           74 %
           75 % The remaining steps are suggested but not required:
           76 %
           77 %      10: Delete PostScript comments in your new LH charlib file - comments
           78 %           start with % and go to the end of the line.
           79 %
           80 %      11: Update the width field assigned to LH in file ../shell.lib. The
           81 %           new width should reflect what's currently in your S1 font file.
           82 %
           83 %      12: Make a similiar set of changes in /usr/lib/font/devLatin1/charlib.
           84 %           You can use the devpost version of LH to devLatin1/charlib/LH,
           85 %           but changes to files devLatin1/S1 and devLatin1/shell.lib must be
           86 %           entered by hand.
           87 %
           88 
           89 /Logo_Dict 100 dict dup begin
           90         /Xoffset 0 def                        % 72 dpi with positive to the right
           91         /Yoffset 0 def                        % 72 dpi with positive up the page
           92         /Scaling 1.0 def                % adjust this number to change the size
           93         /Unitsize 36 def                % for point size scaling - leave it be
           94         /showpage {} def
           95 end def
           96 
           97 /build_LH {                                % don't bind this procedure
           98         Logo_Dict begin
           99                 gsave
          100                 /charwidth exch def
          101                 currentpoint translate
          102                 resolution 72 div dup scale
          103                 Xoffset Yoffset translate
          104                 Scaling Scaling scale
          105                 ptsize Unitsize div dup scale
          106 
          107                 %% Replace everything between the <<StartLogo>> and <<EndLogo>>
          108                 %% comment lines by the PostScript program that prints your
          109                 %% logo.
          110 
          111                 %% <<StartLogo>>
          112                         newpath
          113                         .5 .5 scale
          114                         0 0 moveto
          115                         100 0 lineto
          116                         100 100 lineto
          117                         closepath
          118                         .5 setgray
          119                         fill
          120                         0 setgray
          121                         10 10 translate
          122                         45 rotate
          123                         0 5 moveto
          124                         /Helvetica findfont 18 scalefont setfont
          125                         (Example Logo) show
          126                 %% <<EndLogo>>
          127 
          128                 grestore
          129         end
          130 } def
          131