|
|
1.1 root 1:
2:
3:
4: FED(1) UNIX Programmer's Manual FED(1)
5:
6:
7:
8: NAME
9: fed - font editor
10:
11: SYNOPSIS
12: fed [ -i ] [ -q ] name
13:
14: DESCRIPTION
15: _F_e_d is an editor for font files. It is display oriented and
16: must be used on an HP 2648 graphics terminal. Fed does the
17: necessary handshaking to work at 9600 baud on the 2648.
18:
19: The -i flag requests _i_n_v_e_r_s_e _v_i_d_e_o _m_o_d_e, where all dots are
20: dark and the background is bright. This provides a setting
21: similar to the hardcopy output of the plotter, and is useful
22: for fonts such as the shadow font where shading is impor-
23: tant.
24:
25: The -q flag requests _q_u_i_e_t _m_o_d_e, where all graphic output is
26: suppressed. This mode is useful on terminals other than the
27: HP 2648 (assuming you are editing blindly) and for opera-
28: tions such as the # and A commands, since these operations
29: do not make essential use of graphics, and since suppression
30: of the graphic output speeds of _f_e_d considerably.
31:
32: FONTS
33: A font is a collection of up to 256 _g_l_y_p_h_s, each of which is
34: some pattern or design. Glyphs are represented on Unix as a
35: rectangular array of dots, each of which is either dark or
36: blank. Each location in the array is called a _p_i_x_e_l. There
37: are 200 pixels per inch due to the hardware of the Versatec
38: and Varian plotters.
39:
40: Each glyph has, in addition to its bit pattern, a _b_a_s_e and a
41: _w_i_d_t_h. The base is a point, typically near the lower left
42: of the array, that represents the logical lower left point
43: of the glyph. The base is not restricted to be within the
44: array, in fact, it is usually a few locations to the left of
45: the edge. The vertical position of the base defines the
46: _b_a_s_e_l_i_n_e, which is held constant for all glyphs when a line
47: is typeset. Letters with descenders, such as ``g'', go
48: below the baseline. Other glyphs typically rest on the
49: baseline.
50:
51: The width is used by _t_r_o_f_f(_1) to determine where to place
52: the next glyph. It need not be the same as the width of the
53: array, although it is usually about the same.
54:
55: The size of the array, location of the base, and the width
56: can vary among glyphs in a font. Fonts where all glyphs
57: have the same width are called _f_i_x_e_d _w_i_d_t_h _f_o_n_t_s, others are
58: _v_a_r_i_a_b_l_e _w_i_d_t_h _f_o_n_t_s.
59:
60:
61:
62:
63: Printed 7/26/87 4/29/85 1
64:
65:
66:
67:
68:
69:
70: FED(1) UNIX Programmer's Manual FED(1)
71:
72:
73:
74: Attributes which do not vary among glyphs include the _f_o_n_t
75: _n_a_m_e, which can be up to 11 alphabetic characters, and the
76: _p_o_i_n_t _s_i_z_e, which is a positive integer indicating the
77: overall size of the font. A point is 1/72 inch. The point
78: size of a font is the distance, in points, from the top of
79: the tallest glyph to the bottom of the lowest. The software
80: of troff currently restricts point sizes to 6, 7, 8, 9, 10,
81: 11, 12, 14, 16, 18, 20, 22, 24, 28, and 36 point. Normal
82: text is usually 10 point.
83:
84: Font files conventionally have names of the form
85: name.pointsize
86: for example, ``bocklin.14'' to indicate 14 point bocklin.
87: Fed will look for such a file in both the current directory
88: and /usr/lib/vfont. Vtroff will only look in
89: /usr/lib/vfont.
90:
91: There is a correspondence between _g_l_y_p_h_s and _c_h_a_r_a_c_t_e_r_s in a
92: font. For a given font, each glyph has an ASCII character
93: associated with it. The glyph is obtained in troff by typ-
94: ing the associated character, and in fed glyphs are also
95: referred to by their character. However, it is not required
96: for all characters to have a glyph, fonts never have more
97: than 128 glyphs and usually have fewer.
98:
99: There is usually a natural correspondence between glyphs and
100: characters. For example, the glyph which is a roman lower
101: case `a' will generally have the ascii character `a' as its
102: corresponding character. In the special font, the Greek
103: lower case alpha has `a' as it's corresponding character,
104: upper case delta has 'D' as it's corresponding character,
105: etc. However, special fonts such as the chess font have
106: glyphs that do not appear to be related to their correspond-
107: ing characters.
108:
109: It is easy to confuse glyphs and characters. Note, however,
110: that the three glyphs roman a, bold a, and italic _a, are all
111: different, yet all three correspond to the character `a'.
112: When this is multiplied by the large number of font styles
113: and point sizes, there are many glyphs that match a single
114: character, (but only one in a particular font).
115:
116: FED ORGANIZATION
117: Fed organizes the screen into 21 _w_i_n_d_o_w_s in a 3 by 7 array.
118: Each window is 100 by 100 pixels, meaning that the maximum
119: height and width of a glyph is 100 pixels. Since the HP
120: 2648 has a resolution of 100 dots per inch, glyphs displayed
121: on the screen and printer will be double the actual height
122: and width, even when fully zoomed out. There is a _c_u_r_r_e_n_t
123: _w_i_n_d_o_w, which will be marked with a square border. There
124: are two _p_e_n_s, called _f_i_n_e and _b_o_l_d. The fine pen is one
125: pixel wide, the bold pen can range from two pixels to ten
126:
127:
128:
129: Printed 7/26/87 4/29/85 2
130:
131:
132:
133:
134:
135:
136: FED(1) UNIX Programmer's Manual FED(1)
137:
138:
139:
140: pixels in diameter. The default width of the bold pen is
141: taken from the point size implied by the file name. The
142: point size is not otherwise used. There are also fine and
143: bold _e_r_a_s_e_r_s.
144:
145: There are two locations in the window, called the _c_u_r_s_o_r and
146: the _m_a_r_k. These tools are used to draw on glyphs.
147:
148: Sometimes the cursor is on, in which case it is indicated by
149: the hardware graphics cursor of the terminal, a cross. The
150: cursor is considered to be located at the center of the
151: cross. Sometimes the _r_u_b_b_e_r _b_a_n_d _l_i_n_e is turned on, showing
152: the path a line drawn would traverse. This line runs from
153: the mark to the cursor, and is the only way the mark is
154: graphically visible.
155:
156: COMMANDS
157: Commands to fed are single characters, sometimes followed by
158: any needed arguments. The commands used by fed were chosen
159: to be as similar to _v_i(1) commands as was reasonable.
160: Another distinction is that certain commands are in upper
161: case. These commands were deliberately made hard to type
162: because they cause a large change in the state of the editor
163: and should not be done by accident. In a few cases there
164: are both upper and lower case commands with the same letter.
165:
166: _A_l_p_h_a_n_u_m_e_r_i_c _K_e_y_p_a_d: Note that this is the keypad on the far
167: right. The graphics keypad on the near right will not work.
168: These keys are each synonyms for other commands. They are
169: arranged in a manner that causes the five arrow keys to
170: behave sensibly, but the others need to be memorized or
171: stickers placed on the keys. They are provided for conveni-
172: ence only, and the user can avoid memorization simply by
173: using the mnemonic letter keys instead.
174:
175: The layout is as follows:
176: undo (u) rezoom ( )fillin (f)
177: move (m) up (k) draw (d)
178: left (h) base (b) right (l)
179: setdot (.) down (j)cleardot (>)
180:
181: The arrow keys move the cursor one pixel in the indicated
182: direction. The cursor is turned on if it was off. Note
183: that the alphanumeric keys (far right) must be used. The
184: graphics keys (near right) will appear to move the cursor
185: but it will not be moved internally. The cursor cannot be
186: moved outside the current window.
187:
188: ^_L: Redraw the screen. This is useful if an I/O error or
189: background process has caused the screen to get messed up.
190:
191:
192:
193:
194:
195: Printed 7/26/87 4/29/85 3
196:
197:
198:
199:
200:
201:
202: FED(1) UNIX Programmer's Manual FED(1)
203:
204:
205:
206: _b: Move the cursor to the base of the window. This is the
207: default location of the cursor.
208:
209: _c: If the cursor is on, turn it off. Otherwise, turn it on.
210:
211: _d: Draw a line from the mark to the cursor. The currently
212: selected tool (fine pen, bold pen, fine eraser, bold eraser)
213: is used. The cursor is turned off. The mark is moved to
214: the location of the cursor.
215:
216: _f: Fill in the current hole. The cursor must be in a com-
217: pletely enclosed empty (white) area. The area is set to
218: black. If this command is invoked on the outside or there
219: are any leaks to the outside, the entire outside will be
220: filled in. (Undo is useful in this case.) Filling in cannot
221: jump diagonals, but can rather only spread in the four
222: orthogonal directions.
223:
224: _g <_x>: Get a glyph. X can be any character. The glyph
225: corresponding to x is put in a window, and this window is
226: made the current window. The glyph is centered horizontally
227: in the window. The baseline is located at row 70 from the
228: top of the window. The pen and cursor are placed at the
229: base, and the cursor is turned off. The glyph must exist.
230:
231: _h, _j, _k, and _l are accepted to mean left, down, up, and
232: right, respectively. They are synonymous with the
233: alphanumeric arrow keys. They have the same meanings as in
234: _v_i(_1).
235:
236: _m: Move the mark to the current location of the cursor. The
237: cursor is turned on.
238:
239: _n <_x>: New glyph. This is similar to _g, except that the
240: glyph must _n_o_t exist. It is used to create a new glyph. A
241: blank window is created, centered at (50, 70) as in g.
242:
243: _p: Print the contents of the screen. An HP 2631 printer
244: must be connected to the terminal. The screen is copied to
245: the printer. If in inverse video mode, the screen is
246: changed to normal video mode before the print, and then
247: changed back after the print.
248:
249: _r: If the rubber band line is on, turn it off. Otherwise,
250: turn it on.
251:
252: _s <_w_h_a_t> [<_w_h_e_r_e>]: Set <what> to <where>. What and where
253: are single characters. The possibilities are:
254:
255: _s_p_f: Set pen fine. (`l' for light is also accepted.)
256:
257:
258:
259:
260:
261: Printed 7/26/87 4/29/85 4
262:
263:
264:
265:
266:
267:
268: FED(1) UNIX Programmer's Manual FED(1)
269:
270:
271:
272: _s_p_b: set pen bold. (`h' for heavy is also accepted.)
273:
274: _s_d: Set draw. The pen is used instead of the eraser.
275:
276: _s_e: Set erase. The eraser is used instead of the pen.
277:
278: _s_s<_n>: Set size of bold pen. <n> is a digit from 1 to
279: 9. The size of the bold pen is set accordingly. This
280: also affects the bold eraser.
281:
282: _u: Undo. The previous change to the current window is
283: undone. Note that undo is on a window by window basis, so
284: that commands that affect characters or more than one window
285: cannot be undone.
286:
287: _z <_n>: Zoom to level n. The screen is blown up by a factor
288: of n. This only affects the appearance of the screen to
289: make it easy to see the individual dots, and does not affect
290: the size of the glyph or the result of a print command.
291: Zooming to 1 shows the entire screen, a level of 3 or 4 is
292: probably good for editing glyphs. When a message is printed
293: on the screen, fed automatically zooms out to level 1 so you
294: can read the message. Hitting space will zoom back. z fol-
295: lowed by <return> zooms out without changing the previous
296: zoom.
297:
298: _s_p_a_c_e: Zoom back to the level most recently requested by the
299: z command.
300:
301: _A <_i/_e/_r> <_f_i_r_s_t> <_l_a_s_t> [<_o_l_d_p_s> <_n_e_w_p_s>]:
302: Artificially italicize/embolden/resize a range of glyphs in
303: the current font. Enter i for italicize, e for embolden, or
304: r for resize, and the first and last character in the range
305: desired. If you are resizing you will also have to enter
306: the old and new point size, each terminated by a return.
307: Each glyph is gotten and changed on the screen visibly.
308: Glyphs are italicized by slanting them to the right at a
309: slope of 1/5. They are emboldened by smearing them to the
310: right a number if pixels equal to the current heavy pen
311: size. They are resized with an algorithm which translates
312: all on bits to the new position. These operations will be
313: considerably faster if the -q option is in effect, since
314: much overhead is involved in the graphic display.
315:
316: _B: Move the base to the cursor. The cursor is turned on.
317:
318: _C <_f_r_o_m> <_t_o>: Copy the glyph in character <from> to charac-
319: ter <to>. If <from> has a window on the screen, that window
320: is given to <to>.
321:
322: _D <_f_r_o_m> <_t_h_r_o_u_g_h>: Delete a range of characters in the
323: font, from <from> through <through> inclusive. To delete a
324:
325:
326:
327: Printed 7/26/87 4/29/85 5
328:
329:
330:
331:
332:
333:
334: FED(1) UNIX Programmer's Manual FED(1)
335:
336:
337:
338: single character type it twice.
339:
340: _E <_f_i_l_e>: Edit the named file. If changes have been made to
341: the current file, confirmation will be requested. (Either
342: 'y' or 'E' is accepted.) The file name is terminated with
343: return.
344:
345: _F <_f_i_r_s_t> <_l_a_s_t>: Show the font on the screen. The charac-
346: ters in the specified range are shown. The width values are
347: used to get natural spacing. The display will remain until
348: another command is typed, at which time the previous display
349: will be redrawn and the new command will be executed. As a
350: special case, a ``p'' command will print the results of the
351: ``F'' command instead of the previous display.
352:
353: _I <_h/_v>: Invert the current glyph about a horizontal or
354: vertical axis, as indicated by _h or _v. The axis runs up the
355: center of the window. The base can be subsequently posi-
356: tioned with the _B command.
357:
358: _K: Kill the current glyph. All dots are set to blank. The
359: glyph is not removed from the font. This is used for
360: redrawing a glyph from scratch or replacing it with another
361: glyph.
362:
363: _M <_f_r_o_m> <_t_o>: Move a glyph from <from> to <to>. This is
364: just like the copy command but the original is deleted.
365:
366: _N <_f_i_l_e>: Write out the current file, if necessary, and edit
367: the new file specified. The file name is terminated with
368: return.
369:
370: _P <_f_i_r_s_t> <_l_a_s_t> <_f_i_l_e>: Partial read from a file. A file
371: and the first and last characters in the range are prompted
372: for. Characters not in the range are left unmodified, char-
373: acters in the range are handled as in the R command.
374:
375: _Q: Quit the editor, without saving any work. If changes
376: have been made confirmation will be required (either `Q' or
377: 'y' is taken as `yes'.)
378:
379: _R <_f_i_l_e>: Read in the named file on top of the current file.
380: Glyphs are merged wherever possible. If there is a con-
381: flict, you will be asked whether fed should take the glyph
382: from the file (f) or buffer (b). Responding with F or B
383: will lock in that mode for the remainder of the read. The
384: file name is terminated with a return.
385:
386: _T <_t_e_x_t>:
387:
388: Typeset the line of text on the terminal. This is similar
389: to the F command except that the given text is arranged on
390:
391:
392:
393: Printed 7/26/87 4/29/85 6
394:
395:
396:
397:
398:
399:
400: FED(1) UNIX Programmer's Manual FED(1)
401:
402:
403:
404: the screen, so you can see how some particular combination
405: of characters would look.
406:
407: _V: Toggle whether editing is being done in inverse video
408: mode.
409:
410: _W <_f_i_l_e>: Write the buffer out onto the named file, which is
411: terminated by return. A null file name means the current
412: file name.
413:
414: _Z_Z: Exit fed. A write is done, if necessary, followed by a
415: quit. This is the normal way to leave fed. The Z must be
416: doubled for compatibility with _v_i.
417:
418: .: Turn on the dot under the cursor. The cursor is turned
419: off.
420:
421: >: Turn off the dot under the cursor. The cursor is turned
422: off.
423:
424: # <_c_h_a_r> <_f_i_e_l_d> <_v_a_l_u_e>: Edit a numerical field. This only
425: makes sense if the glyph has not been gotten (_g or _n) yet,
426: since otherwise the values are taken from window specific
427: things such as the base. Fed does not do any sanity check-
428: ing, but just substitutes the value input. Fields are the
429: first letter of any field from the dispatch structure (see
430: vfont(5)), specifically, these fields are _a_d_d_r, _n_b_y_t_e_s,
431: _l_e_f_t, _r_i_g_h_t, _u_p, _d_o_w_n, and _w_i_d_t_h. The number, which may be
432: signed, is terminated by a newline.
433:
434: FILES
435: /usr/lib/vfont/*.*
436:
437: SEE ALSO
438: vfont(5), vfontinfo(1), vtroff(1), vwidth(1)
439:
440: AUTHOR
441: Mark Horton
442:
443: BUGS
444: Attempting to use the second 128 characters would be folly.
445: Fed has never been tested on such fonts, and at a bare
446: minimum there would be problems trying to input 8 bit char-
447: acters.
448:
449: The character DEL is interpreted by the tty driver to mean
450: interrupt. Hence the corresponding glyph cannot be
451: accessed. The _s_t_a_r_t, _s_t_o_p, and _q_u_i_t characters are turned
452: off, but other characters used by the new tty driver must be
453: quoted with ^V.
454:
455:
456:
457:
458:
459: Printed 7/26/87 4/29/85 7
460:
461:
462:
463:
464:
465:
466: FED(1) UNIX Programmer's Manual FED(1)
467:
468:
469:
470: Changed widths are not copied to the width table used by
471: troff. This only matters if logical widths are changed, or
472: if glyphs are moved around. For these cases, _v_w_i_d_t_h(_1) must
473: be used.
474:
475: The artificial operations don't do a very good job. The
476: quality possible from blowing a font up is in general poor.
477: Italicizing tends to make edges that were previously slanted
478: very ragged. However, these operations are better than
479: nothing at all and are a reasonable first approximation for
480: hand fixing.
481:
482: The HP 2648 Terminal on which this runs has been stolen.
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525: Printed 7/26/87 4/29/85 8
526:
527:
528:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.