1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
*** SCSI::Doves.$.Libra.WIMP.JCoxhead.WStoye02 Fri Oct 30 14:47:33 1992
--- SCSI::Doves.$.Libra.WIMP.JCoxhead.WStoye03 Fri Oct 30 14:47:38 1992
***************
*** 6 ****
--- 7,50 ----
+ 0.02 WS 30-Oct-92 - feedback from JCoxhead, IJohnson, MChallis
+
+ Issues
+ ------
+
+ MChallis says, a long way from being a spec - very true! Long journey
+ starts with first step...
+
+ A fn spec for changes to an existing thing should be expressed
+ as changes to the existing functional spec.
+
+ The actual functional spec should be identified as such, and separated
+ from planning/resourcing info, implementation hints, etc.
+
+ Do we allow the term 'the system font' in the context of the Window Manager
+ to be used to describe either the built-in system font, or the wimp font,
+ whichever currently applies? This keeps user-level terminology consistent
+ with the present. Or, leave this decision to documentation people.
+
+ Should we separate wimp font width from height? It would be a little bit
+ nicer to weird users, particularly if some odd-ball wants to use Corpus
+ in some form.
+
+ Another solution considered to the shift-character problem was: If the first
+ or second character of the keyboard shortcut is shift-arrow (&8B), then use
+ the character code &DD from the Sydney font (at the same point size)
+ instead, when painting. (This ugly special case is because this shift arrow
+ is not present in most fonts, and should not be added to them because it is
+ not in the PostScript fonts either.) HOWEVER, in mode 12 this leads to the
+ shift character not having a hand-tuned representation, and so appearing
+ anti-aliased next to non-anti-aliased other characters! So, we go the other
+ way.
+ Perhaps we could combine both rules? If there is a character there then
+ use it, otherwise use Sydney? Yuk! This would mean that we don't have to
+ update the Homerton.Medium font, yet we can put it in the hand-tuned font.
+ No, the two share a metrics file!
+ So, I currently see no better solution to what is in the text.
+
+ Define the validation string entry that turns off tabbing in wimp font
+ icons.
+
+ Is auto-tabbing in wimp font icons really acceptable? It feels a dangerous
+ blot on the API. Perhaps it should require explicit enabling, rather than
+ disabling?
***************
*** 38,45 ****
- The work is divided into the following parts:
- work on scalable fonts in the window manager
- other graphic design improvements
- work on error boxes in the window handler
- The three phases should be kept strongly separate, in order to help monitor
- progress. A product-quality release is expected at the completion of each
- phase, and intermediate releases are expected in the first two phases.
-
--- 81 ----
***************
*** 47,48 ****
! Manager in RISC OS 3.10. Use the PRM, and the Window Manager itself, as the
! specification for this.
--- 83,86 ----
! Manager in RISC OS 3.10. Use the RISC OS User Guide, the PRM, and the Window
! Manager itself, as the specification for this. If these differ in some
! relevant area then this document should make an explicit choice between
! them.
***************
*** 65,67 ****
- Refer to William's document about future use of dialogue boxes, which
- describes the basic approach to 3D and to the use of proportional fonts.
-
--- 102 ----
***************
*** 76,77 ****
! with a hand-tuned bitmap of this font at 12-point. This bitmap already exists,
! obtain from William.
--- 111 ----
! with a hand-tuned bitmap of this font at 12-point.
***************
*** 79 ****
! The following changes are required to the Window Manager.
--- 113,114 ----
! Specification
! =============
***************
*** 81,85 ****
! If the variables <wimp$font> and <wimp$fontsize> are set (check this at
! startup or at a mode change) then they indicate the font and point-size
! which should be used as the surrogate system font ('the wimp font'). This
! font should be used to plot icons, window titles, menus and so on in place
! of the system font.
--- 116 ----
! The following changes are required to the Window Manager in RISC OS 3.10.
***************
*** 87 ****
! (Aside: a prototype Wimp already exists which does this,
--- 118,179 ----
! If the variables <wimp$font> and <wimp$fontsize> are set then they indicate
! the font and point-size which should be used as the surrogate system font
! ('the wimp font'). This font should be used by the Window Manager to plot
! icon text that would otherwise be plotted in the system font. Window titles
! and menu text should also be treated in this way. The existence and values
! of these variables should be checked at startup, and at a mode change.
!
! If painting generates an error for any reason, then do not report an error
! but fall back to the system font. (This is particularly important when
! painting the error box itself).
!
! An application can get hold of the wimp font handle, in order to do width
! calculations, by doing a Font_FindFont of <wimp$font>, <wimp$fontsize>). It
! can detect whether the wimp font or the built-in system font is being used
! by testing for the existence of <wimp$font>.
!
! When using the wimp font or the built-in system font, perform
! auto-computation of menu width. Simply ignore the width that the application
! provides in Wimp_OpenMenu. Menus should be just wide enough to contain the
! title, and all of the entries, in the menu.
!
! In menus keyboard shortcuts must be displayed right-aligned. These
! are detected using the following rule:
!
! If a menu entry contains at least one space, and the character after the last
! space is one of "^", shift-arrow (&8B), "F", then right align everything
! after the last space.
!
! If a menu entry contains at least one space, and the caracters after the
! last space exactly match one of the words specified in a list in the Wimp's
! Messages file, then right-align everything after the last space. In the
! UK this list will consist of "PRINT RETURN ESC TAB".
!
! In the plotting of a non-writable left-aligned icon in the wimp font, the
! appearance of multiple space characters should be interpreted as an attempt
! to move to a tabstop. In such a case the first non-space character after the
! multiple spaces should be plotted at
! <number of characters so far, including the spaces> * 16 OS-Units
! from the start of the icon. This effect can be disabled using a suitable
! entry in the validation string.
!
! The following changes are required to the Homerton font:
!
! Add a shift-arrow character (&8B) to Homerton.Medium, in order to match the
! character in the built-in system font. Simply copy the character &DD from
! the Sydney font. Add an equivalent to the hand-tuned copy of Sydney at
! 12-point. This character is only for this purpose and should not be regarded
! as part of the standard character set. It does not appear in PostScript
! fonts and users should not be encouraged to put it in documents.
!
! A tuned bitmap _240x120 should be provided which makes Homerton.Medium 12
! point on a TV-resolution display show using no anti-aliasing.
!
! Changes are required to the Filer to make it work with scalable fonts.
! Specifically the small and full info display modes need adjustment. No
! changes are required to any program interfaces, nor to the behaviour of the
! Filer to the user.
!
! Implementation notes
! ====================
!
! A prototype Wimp already exists which provides the basic wimp font,
***************
*** 121,166 ****
! If painting generates an error for any reason, then fall back to the system
! font. (particularly in the Wimp error box)
!
! In addition the following extensions to functionality are required:
!
! Provide a 'right align' control character in text icons. Text subsequent to
! this character is right aligned. This is mainly for use in menus, to
! right-align the keyboard shortcut. It need not work in writable icons.
!
! When using the wimp font, perform auto-computation of menu width. Simply
! ignore the width that the application suggests. (Issue: Does r-click mean
! you have to recompute this? This might slow things down unacceptably.
! Implement and see if this is so. If there's a problem, we might have to
! insist that the application puts in a width of 0 to indicate 'please
! calculate the width for me'.) At a right-align character leave at least
! the width of one space in the wimp font.
!
! (Aside: the application can get hold of the wimp font handle, in order to do
! width calculations, by doing a Font_FindFont of <wimp$font>,
! <wimp$fontsize>).
!
! Add a 'shift' character to the Homerton.Medium font from Symbol/Sydney, for
! use as the shift-key indicator in menu keyboard shortcuts. This is an ugly
! solution to this problem, but I see no better one. If you print it in
! PostScript it isn't there - people are not recommeded to use it in
! documents. Add this character to the tuned bitmap too.
!
! When opening a menu, certain character sequences have right-align inserted
! into them in order to correctly right-align keyboard shortcuts. Specifically
! the following rules apply:
!
! If a menu entry contains at least one space, and the character after the last
! space is one of "^", shift-arrow, "F", then convert the last space into
! a right-align.
!
! If a menu entry contains at least one space, and the caracters after the
! last space are exactly "PRINT" or "RETURN" or "ESC", then convert the
! last space into a right-align.
!
! (Aside: this is quite dangerous, as these sorts of rules are hard to
! internationalise etc. But, the above rules seem to me quite simple and they
! mean that applications writers typically do not have to change anything.)
!
! Update the Filer to work with scalable fonts. The small and full info
! display modes both have problems, I'm not aware of any others. It must still
! work with the system font too.
--- 213,214 ----
! The auto-calculation of menu width has to be fast - it is called
! whenever a menu is opened or reopened.
***************
*** 168,173 ****
! Update the NetFiler to work with scalable fonts. The FS list display in
! full-info mode is the only problem area that I'm aware of. (Aside: perhaps
! a tab-to-absolute-position control sequence in a writable icon would be
! helpful in doing this? If so then add it to the Window Manager, as the
! result is probably useful to ISVs with similar work to do). It must still
! work with the system font too.
--- 216,219 ----
! It may be that the easiest way to right-align menu entries is to provide a
! right-align control code in text icons. I cannot think of any other reason
! for providing this. At the moment the we do not specify whether or not this
! is the implementation mechanism.
***************
*** 175,179 ****
! (Issue: one could try to look for multiple spaces, and guess that they are
! moves to a tabstop. I think this is too dangerous a corruption of the API
! to simply apply generally. Perhaps a new icon flag could be defined which
! provides this functionality? This would make the update required to the
! NetFiler almost negligable. It should not be applied in writable icons.)
--- 221,222 ----
! The tuned bitmap file Homerton.Medium._240x120 already exists, obtain it
! from William.
***************
*** 181,183 ****
! I'm not aware of any other significant issues in the ROM. Paint paints some
! text in its window as VDU-5 painting, Calc prints its answer as VDU-5 text.
! Both of these should be fixed.
--- 224,226 ----
! Paint and Calc both make minor use of direct painting using the built-in
! system font. Neither of these uses is important or noticable enough to need
! fixing for release of this code.
***************
*** 185,186 ****
! Other updates to improve graphic design
! ---------------------------------------
--- 228,229 ----
! Beware of tricky interactions between auto-tabbing, and right alignment of
! menu keyboard shortcuts. In a menu entry auto-tabbing is really not useful.
***************
*** 188 ****
! (full specification not provided yet)
--- 231,232 ----
! Delivery notes
! ==============
***************
*** 190,191 ****
! Updates to improve the handling of error messages
! -------------------------------------------------
--- 234,237 ----
! These new modules will be cut in to the next product release of RISC OS,
! probably as part of Victoria. However, they may well get circulated before
! then, particularly to high-end users who want the result and are prepared to
! pay the memory cost of soft-loading a Wimp.
***************
*** 193 ****
! (full specification not provided yet)
--- 239,246 ----
! In such a case the result is a package consisting of
! Modules.Wimp, a new WindowManager module
! Modules.Filer, a new Filer module
! Modules.WimpFont, a WimpFont module
! ReadMe, an instruction file
! The latter will place adjusted files in ResourceFS for the updates to the
! Homerton.Medium font. (In the circumstances it seems slightly preferable
! to adding a !Fonts application).
***************
*** 194 ****
--- 248,249 ----
+ Users will have to RMLoad these in their machine boot file, since the
+ WindowManager cannot be replaced when the desktop has started.