Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ OverviewNo.1No.2No.3No.5No.6No.7No.8No.9No.10
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureProgress ReportsGraphics User Notes
ACLLiteratureProgress ReportsGraphics User Notes
ACL ACD C&A INF CCD CISD Archives
Further reading

Overview
No.1
No.2
No.3
No.5
No.6
No.7
No.8
No.9
No.10

Graphics User Note No 2: Blocked Character Font

D Ralphs

22 April 1976

2.1 INTRODUCTION

A graphical font has been designed to aid the production of graphics where bold text is required. In the standard fonts the characters consist of single lines and when used for large text these lines become relatively very thin. Sometimes, when projecting film, the characters are nearly invisible. In the case of the blocked font, when the characters are enlarged a greater area is shaded but at the same density as the smaller characters. For example, if the shading is at ten raster intervals when a character is four hundred rasters, it will still be at ten raster intervals if the character is four thousand rasters.

The blocked font is available to users of the SMOG graphics package and is intended for use with the FR80. It is designed to produce output which is both efficient from a system point of view and yet easy to use from user point of view. The routines can be called from either "region 0" or "region 1" of SMOG although if using "region 1" some care has to be taken with regard to the character size but this is explained in more detail later.

Initially each character is defined in a rectangle 40 units by 40 units, called the defining rectangle, but no character uses the right quarter of the rectangle as this is used for spacing. Each unit is set to ten rasters, thus an "A" is 300 rasters wide by 400 rasters high with a space of 100 rasters when plotted in a text string at the default size.

2.2 USER ROUTINES

The subroutine arguments follow the usual FORTRAN conventions, that is X is a real and N is an integer. There are four user routines and their functions are described below.

(1) WRIGHT(X,Y,TEXT,N) 

This routine plots the first N characters from the string of characters TEXT starting at the point (X,Y). It is possible to alter the meaning of (X,Y) but see the routine WANGLE for more details.

(2) WCHFAC(XF,YF) 

XF and YF are the expansion factors in the x and y directions respectively. If called whilst in region zero then they are factors of the "defining rectangle", for example, XF = 1.5 and YF = 2.0 will set the characters to 60 units by 80 units, of which at least the last 15 units in the X direction are used for spacing. If WCHFAC is called whilst in region one then XF and YF are in the user's coordinates and specify the size of the characters. For example, if using the "cine" area with limits (0.0,0.0,10.0,10.0) and letting XF = 2.5 and YF = 2.0 then the characters will be a quarter of the "cine" area wide by a fifth high. When working in region one, or even region zero, it is advisable to ensure that the characters are not reduced below about 20 units as some of them start to break up at about this size. All subsequent calls to WCHFAC work on the original definition of the "defining rectangle".

(3) WANGLE(XROT,YROT,DEG) 

The routine WRIGHT initially plots characters starting at the point (X,Y) in a horizontal direction. WANGLE specifies a rotation about the point (XROT,YROT) by DEG degrees in a clockwise direction. Thus all subsequent calls of WRIGHT plot text at an angle DEG degrees starting at the point (X',Y') where:

      X' = XROT + (X-XROT) cos DEG + (Y-YROT) sin DEG 
      Y' = YROT - (X-XROT) sin DEG + (Y-YROT) cos DEG 

WANGLE always works on the initial horizontal orientation and is not incremental in nature; hence setting DEG = 0.0 returns the text to the normal orientation.

(4) WTHICK(NRASTS) 

The blocks that the characters are built up on are sets of parallel lines, each line is drawn one unit away from the next. As stated in the introduction these units are set to ten rasters, which just happens to be the average line width on the FR80. The line width is dependent on the type of film being used and it may be necessary to adjust the gap between the lines. NRASTS ill set a new unit size to be NRASTS rasters. This routine has one major disadvantage, it adjusts the character sizes in sometimes unexpected ways and should not be used unless absolutely necessary.

2.3 USE ON THE 1906A

It is assumed that a potential user is familiar with the SMOG and TASK systems on the 1906A. To include the blocked character font into a SMOG program one adds the parameter LIB:GRAFLIB.GRAFLIB to the parameter list passed to the macro. In the example program, see below, text is:

(a) plotted at the default size and orientation

(b) rotated and

(c) expanded.

The program can be found in the file :GRAFEX.FATLETEX1 and the job to run it was submitted whilst logged in by the following command:

SMOG *CR:GRAFEX.FATLETEX1, LIB: GRAFLIB.GRAFLIB,JT20,*LP,#LP6 

A listing of the source is shown below together with the FR80 output that was produced.

2.3.1 Example One, FORTRAN Source

      LIST 
      MASTER EX1906A 
      DIMENSION ISTR(5),STR(2) 
C 
C INTEGER ARRAYS PACK TEXT AT FOUR ·CHARACTFRS PER WORD. 
C REALS ARE DOUBLE WORDS HENCE EIGHT CHARACTERS PER ARRAY FLEMENT. 
C 
      DATA ISTR/'THE','STAN','DARD',' SIZ','E'/
      DATA STR/'+45 DEGS','-45 DEGS'/
C SELECT HARDCOPY 
      CALL FRHCS 
C 
C WORK IN REGION ZERO FOR F RST PHRASE 
      CALL REGION (0,0) 
C-OUTPUT FIRST TEXT ALONG THE TOP OF THE FRAME
      CALL WRIGHT (5000.0,13000.0,0,ISTR,17),ISTR,17) 
C--NOW FOR SOME FANCY ANGLES! 
      CALL WANGLE (7000.0,7500.0,45.0) 
      CALL WRIGHT (5400.0,7500.0,STR(1),8) 
      CALL WANGLE (11O000.0,7500.0,-45.0) 
      CALL WRIGHT (9400.0,7500.0,STR(2),8) 
C--AN EXAMPLE USING REGION 1 
      CALL WANGLE (0.0,0.0,0.0) 
      CALL CINIE 
      CALL REGION (1.0) 
      CALL LIMITV (O0.0,0.0,8.0,8.0)) 
C  ADJUST CHARACTER SIZE TO SUIT USER COORDINATES
      CALL WCHFAC (1.0,1.0) 
C NCOW OUTPUT TEXT
      CALL WRIGHT (2.5,5.5,'BOLD,4)
C TERMINATE PLOTTING 
      CALL ENDSPR 
      STOP
      END
****

2.3.2 Example One, FR80 Output Produced

2.4 USE OF THE 360/195

When using SMOG on the 360/195 access to the blocked character font routines is automatic as they are in the library SYS1.SMOG. This means that the standard JCL required for SMOG does not need changing, all that is needed to access the font are calls to the relevant routines in the program.

The example program in this section serves two purposes, firstly it shows how to use the blocked font and secondly it shows which of the 195 character set have been included in the font. The table produced is incremental by row, thus, the hexadecimal representation of a character is obtained by: locating the character in the table, the code to the left providing the first digit and the code along the top giving the second digit, for example, an 'A' is represented by the code C1.

The program plus the relevant JCL is stored in ELECTRIC as file 3RMATNDR.FATLETEX (DR). When executing the file there are three possible parameters that may be passed to it and these are:

Parameter     Function                        Default 
PH          Destination(Pigeon Hole)            XA
JBNM        Jobname (1-6 chars)                 MPLE
USER        User                                EXAMPLE

These parameters are PLANTed in the appropriate place in the JOB card when the file is executed. If logged in to ELECTRIC, the following could be used to execute the program:

PARM JBNM = idTEST, USER = ME 
EXEC FL = 3RMAINDR.FATLETEX(DR) 

Remember to add a PH parameter if the output is not destined for Atlas.

2.4.1 Example Two, FORTRAN Source with JCL (Default)

/*PRIORITY 12 
//XAMPLE JOB (ACCT, ID,0-05) ,EXAMPLE 
// EXEC F1CLG,SYSLIB='SYS1.SMOG',CPRINT=YES,REGION.G=210K 
//C.SYSIN DD * 
C THIS EXAMPLE PROGRAM IS TO ILLUSTRATE WHICH CHARACTERS ARE AVAILABLE 
C FROM THE COMPLETE 195 CHARACTER SET. ALL 256 CHAR CODES ARE PASSED 
C TO THE WRIGHT ROUTINE AND ONLY THOSE THAT ARE AT PRESENT CODED WILL 
C BE PLOTTED THE OTHERS WILL PRODUCE A SPACE 
C 
C SELECT THE HARDCOPY CAMERA AND SUITABLE LIMITS 
C 
      CALL FRHCM 
      CALL ABUT 
      CALL LIMITV (1.5,-0.5,16.5,17.5) 
      CALL WCHFAC (1.0,0.75) 
C FIRST FOUR CHARS ARE SET UP AND UPDATE MASK IS INITIALISED 
      ICHAR=(256+2)*256+3 
      MUPDT=((4*256+4)*256+4)*256+4 
C OUTPUT 16 LINES OF CHARS 
      DO 1 I= 1,16 
      Y=16.125-I 
C OUTPUT 4 CHARS 4 TIMES FOR EACH LINE 
      DO 2 J=1,4 
      X=(J-1)*4.0+0.125 
      CALL WRIGHT (X,Y,ICHAR,4) 
C UPDATE TO NEXT FOUR CHARS, IGNORE OVERFLOW ON LAST TIME THROUGH 
      ICHAR=ICHAR+MUPDT 
  2   CONTINUE 
  l   CONTINUE 
C PUT A GRID AROUND THE CHARACTERS 
      CALL HGRATX (0.0,0.0,16.0,16.5,16) 
      CALL HGRATY (-0.5,0.0,16.0,16.0,16) 
C ANNOTATE GRID 
      CALL RIGHT (0.125,16.25,'0123456789ABCDEF', 16) 
      CALL WCHFAC (0.76,1.0) 
      CALL WANGLE (-.875,15.875,90.0) 
      CALL WRIGHT (-.875,15.875,'0123456789ACDEF',16) 
C TERMINATE PLOTTING 
      CALL ENDSPR 
      STOP 
      END 
/*
//G.GRAPHICS DD SYSOUT=(G,,HCM) 
//G.FT12F001 DD SYSOUT=A,DCB=PRINTER 

2.4.2 Example Two, FR80 Output Produced

2.5 SUMMARY

The basic aim of the blocked character font is to provide users with a character set that can be used for film titling. In fact wherever bold text is required, the font should be relatively easy to use but at the same time will utilise the resources in an efficient way. The present stage of development is biased towards the 1906A in that only the 64 characters at the 1900 lineprinter set have been coded. These 64 characters have been set up in the relevant character positions on the 360/195.

Using the font it is possible to rotate the text, expand the text and to squash or stretch the characters. The possible future developments are at the very least extending the set to include lower case letters providing adjustable and proportional spacing, italics and many more. The author would be very grateful for any suggestions for enhancements and improvements.

One final piece of advice, it is best to check the layout first by outputting to "many-up" hardcopy and then when it is correct moving on to the desired film type.

2.6 APPENDICES

2.6.1 Appendix 1 - Routine names excluding SMOG

Routine   Type   
WANGLE    User   
CIFAC     User   
WDCODE    System   
WFLERR    System   
WPLOTC    System   
WRIGHT    User   
WSEMI     System   
WSIZE     System   
WTHICK    User   
WVFXPL    System   
WVFXRC    System   
WVFYPL    System   
WVFYRC    System   

2.6.2 Appendix 2 1906A character set using the font

⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site