diff --git a/library/sketch/SKETCH b/library/sketch/SKETCH
index 76c5e334..55e21965 100644
--- a/library/sketch/SKETCH
+++ b/library/sketch/SKETCH
@@ -1,12 +1,22 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED " 5-Dec-2023 00:44:13" {WMEDLEY}<library>sketch>SKETCH.;5 491114 
+(FILECREATED " 4-Nov-2025 15:24:34" {WMEDLEY}<library>sketch>SKETCH.;7 491766 
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (VARS SKETCHCOMS)
+      :CHANGES-TO (VARS SKETCHCOMS SKETCHFILES SKETCH.TITLED.ICON.TEMPLATE)
+                  (FNS SK.OUTPUT.FILE.NAME SKETCH.TITLE)
+                  (RECORDS SKHISTORYCHANGESPEC GROUP LOCALGROUP SKFIGUREIMAGE SCREENELT GLOBALPART 
+                         COMMONGLOBALPART INDIVIDUALGLOBALPART LOCALPART SKETCH SKETCHTYPE 
+                         SKETCHCONTEXT)
+                  (PROPS (SKETCH.CREATE ARGNAMES)
+                         (GROUP EVENTFNS)
+                         (UNGROUP EVENTFNS)
+                         (FREEZE EVENTFNS)
+                         (UNFREEZE EVENTFNS))
+                  (MACROS .DELETEKEYDOWNP. .MOVEKEYDOWNP. .SHIFTKEYDOWNP.)
 
-      :PREVIOUS-DATE "19-Oct-2023 23:55:27" {WMEDLEY}<library>sketch>SKETCH.;4)
+      :PREVIOUS-DATE " 3-Nov-2025 16:21:01" {WMEDLEY}<library>sketch>SKETCH.;5)
 
 
 (PRETTYCOMPRINT SKETCHCOMS)
@@ -48,17 +58,16 @@ To abort loading the new version of Sketch, type '^'."]
         (FNS SKETCH SKETCH.FROM.A.FILE SKETCHW.CREATE SKETCH.RESET SKETCHW.FIG.CHANGED 
              SK.WINDOW.TITLE EDITSLIDE EDITSKETCH SK.PUT.ON.FILE SK.OUTPUT.FILE.NAME SKETCH.PUT 
              SK.GET.FROM.FILE SK.INCLUDE.FILE SK.GET.IMAGEOBJ.FROM.FILE SKETCH.GET 
-             ADD.SKETCH.TO.VIEWER FILENAMELESSVERSION SK.ADD.ELEMENTS.TO.SKETCH SKETCH.SET.A.DEFAULT
-             SK.POPUP.SELECTIONFN GETSKETCHWREGION SK.ADD.ELEMENT SK.ADD.PRIORITY.ELEMENT.TO.SKETCH 
-             SK.ELTS.BY.PRIORITY SK.ORDER.ELEMENTS SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 
-             SK.ADD.ELEMENTS SK.CHECK.WHENADDEDFN SK.APPLY.MENU.COMMAND SK.DELETE.ELEMENT1 
-             SK.MARK.DIRTY SK.MARK.UNDIRTY SK.MENU.AND.RETURN.FIELD SKETCH.SET.BRUSH.SHAPE 
-             SKETCH.SET.BRUSH.SIZE SKETCHW.CLOSEFN SK.CONFIRM.DESTRUCTION SKETCHW.OUTFN 
-             SKETCHW.REOPENFN MAKE.LOCAL.SKETCH MAP.SKETCHSPEC.INTO.VIEWER SKETCHW.REPAINTFN 
-             SKETCHW.REPAINTFN1 SK.DRAWFIGURE.IF SKETCHW.SCROLLFN SKETCHW.RESHAPEFN 
-             SK.UPDATE.EVENT.SELECTION LIGHTGRAYWINDOW SK.ADD.SPACES SK.SKETCH.MENU 
-             SK.CHECK.IMAGEOBJ.WHENDELETEDFN SK.APPLY.IMAGEOBJ.WHENDELETEDFN SK.RETURN.TTY 
-             SK.TAKE.TTY)
+             ADD.SKETCH.TO.VIEWER SK.ADD.ELEMENTS.TO.SKETCH SKETCH.SET.A.DEFAULT SK.POPUP.SELECTIONFN
+             GETSKETCHWREGION SK.ADD.ELEMENT SK.ADD.PRIORITY.ELEMENT.TO.SKETCH SK.ELTS.BY.PRIORITY 
+             SK.ORDER.ELEMENTS SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH SK.ADD.ELEMENTS 
+             SK.CHECK.WHENADDEDFN SK.APPLY.MENU.COMMAND SK.DELETE.ELEMENT1 SK.MARK.DIRTY 
+             SK.MARK.UNDIRTY SK.MENU.AND.RETURN.FIELD SKETCH.SET.BRUSH.SHAPE SKETCH.SET.BRUSH.SIZE 
+             SKETCHW.CLOSEFN SK.CONFIRM.DESTRUCTION SKETCHW.OUTFN SKETCHW.REOPENFN MAKE.LOCAL.SKETCH
+             MAP.SKETCHSPEC.INTO.VIEWER SKETCHW.REPAINTFN SKETCHW.REPAINTFN1 SK.DRAWFIGURE.IF 
+             SKETCHW.SCROLLFN SKETCHW.RESHAPEFN SK.UPDATE.EVENT.SELECTION LIGHTGRAYWINDOW 
+             SK.ADD.SPACES SK.SKETCH.MENU SK.CHECK.IMAGEOBJ.WHENDELETEDFN 
+             SK.APPLY.IMAGEOBJ.WHENDELETEDFN SK.RETURN.TTY SK.TAKE.TTY)
         (COMS                                                (* ; 
                                                              "fns for dealing with the sketch menu")
               (FNS SKETCH.COMMANDMENU SKETCH.COMMANDMENU.ITEMS CREATE.SKETCHW.COMMANDMENU 
@@ -242,6 +251,7 @@ To abort loading the new version of Sketch, type '^'."]
                            "Reads a file name and opens a sketch window onto the sketch it contains."
                                                               ]
         (VARS (BackgroundMenu))
+        (VARS SKETCHFILES)
         (FILES SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT)
         (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY (FILES (LOADCOMP)
                                                                 SKETCH-OPS SKETCH-ELEMENTS SKETCH-OBJ
@@ -437,12 +447,13 @@ To abort loading the new version of Sketch, type '^'."]
           (RETURN NEWNAME])
 
 (SK.OUTPUT.FILE.NAME
-  [LAMBDA (SKETCHFILENAME)                                   (* rrb " 5-May-86 10:45")
+  [LAMBDA (SKETCHFILENAME)                                   (* ; "Edited  3-Nov-2025 15:05 by rmk")
+                                                             (* rrb " 5-May-86 10:45")
     (COND
-       ((STRPOS " " SKETCHFILENAME)                          (* don't put up dummy names that 
-                                                             contain spaces)
+       ((STRPOS " " SKETCHFILENAME)                          (* ; 
+                                                       "don't put up dummy names that contain spaces")
         NIL)
-       (T (FILENAMELESSVERSION SKETCHFILENAME])
+       (T (PACKFILENAME 'VERSION NIL 'BODY SKETCHFILENAME])
 
 (SKETCH.PUT
   [LAMBDA (FILENAME SKETCH VIEWER REGION SCALE GRID)         (* ; "Edited  1-Feb-2022 09:17 by rmk")
@@ -640,13 +651,6 @@ To abort loading the new version of Sketch, type '^'."]
                                                                  (GETSKETCHPROP TOSKETCH 'VIEWS])
                     (PUTSKETCHPROP TOSKETCH SKPROP (GETSKETCHPROP ADDSKETCH SKPROP])
 
-(FILENAMELESSVERSION
-  [LAMBDA (FILENAME)                                         (* rrb "29-Jan-86 15:57")
-          
-          (* strips the version number off of FILENAME if it has one.)
-
-    (PACKFILENAME (CONS 'VERSION (CONS NIL (UNPACKFILENAME FILENAME])
-
 (SK.ADD.ELEMENTS.TO.SKETCH
   [LAMBDA (ELTS SKW)                                         (* rrb "10-Mar-86 16:50")
                                                              (* adds a list of elements to a sketch)
@@ -6657,10 +6661,9 @@ This will be slow for arcs and curves."))
 (DEFINEQ
 
 (SKETCH.TITLE
-  [LAMBDA (SKW)                                              (* rrb " 5-May-86 13:19")
-          
-          (* gets the title of the sketch being edited in SKW.)
-
+  [LAMBDA (SKW)                                              (* rrb " 5-May-86 13:19")
+                                                             (* gets the title of the sketch being 
+                                                             edited in SKW.)
     (fetch (SKETCH SKETCHNAME) of (INSURE.SKETCH SKW])
 
 (SK.SHRINK.ICONCREATE
@@ -8594,6 +8597,8 @@ Otherwise, type '^'.")
 
 (RPAQQ BackgroundMenu NIL)
 
+(RPAQQ SKETCHFILES (SKETCH SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT))
+
 (FILESLOAD SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT)
 (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY 
 
@@ -8768,149 +8773,149 @@ Otherwise, type '^'.")
 (ADDTOVAR LAMA SK.UNIONREGIONS SKETCH.CREATE)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (22176 85539 (SKETCH 22186 . 24291) (SKETCH.FROM.A.FILE 24293 . 24608) (SKETCHW.CREATE 
-24610 . 29184) (SKETCH.RESET 29186 . 30708) (SKETCHW.FIG.CHANGED 30710 . 31050) (SK.WINDOW.TITLE 31052
- . 31439) (EDITSLIDE 31441 . 31847) (EDITSKETCH 31849 . 32173) (SK.PUT.ON.FILE 32175 . 33627) (
-SK.OUTPUT.FILE.NAME 33629 . 34003) (SKETCH.PUT 34005 . 36903) (SK.GET.FROM.FILE 36905 . 37798) (
-SK.INCLUDE.FILE 37800 . 40308) (SK.GET.IMAGEOBJ.FROM.FILE 40310 . 42513) (SKETCH.GET 42515 . 42822) (
-ADD.SKETCH.TO.VIEWER 42824 . 45410) (FILENAMELESSVERSION 45412 . 45688) (SK.ADD.ELEMENTS.TO.SKETCH 
-45690 . 46204) (SKETCH.SET.A.DEFAULT 46206 . 53364) (SK.POPUP.SELECTIONFN 53366 . 53908) (
-GETSKETCHWREGION 53910 . 54116) (SK.ADD.ELEMENT 54118 . 55697) (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH 
-55699 . 57093) (SK.ELTS.BY.PRIORITY 57095 . 57391) (SK.ORDER.ELEMENTS 57393 . 57660) (
-SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 57662 . 59156) (SK.ADD.ELEMENTS 59158 . 59682) (
-SK.CHECK.WHENADDEDFN 59684 . 60414) (SK.APPLY.MENU.COMMAND 60416 . 61214) (SK.DELETE.ELEMENT1 61216 . 
-62794) (SK.MARK.DIRTY 62796 . 63462) (SK.MARK.UNDIRTY 63464 . 63795) (SK.MENU.AND.RETURN.FIELD 63797
- . 64462) (SKETCH.SET.BRUSH.SHAPE 64464 . 65049) (SKETCH.SET.BRUSH.SIZE 65051 . 65557) (
-SKETCHW.CLOSEFN 65559 . 67350) (SK.CONFIRM.DESTRUCTION 67352 . 68351) (SKETCHW.OUTFN 68353 . 68617) (
-SKETCHW.REOPENFN 68619 . 69031) (MAKE.LOCAL.SKETCH 69033 . 69763) (MAP.SKETCHSPEC.INTO.VIEWER 69765 . 
-70975) (SKETCHW.REPAINTFN 70977 . 71805) (SKETCHW.REPAINTFN1 71807 . 72746) (SK.DRAWFIGURE.IF 72748 . 
-73270) (SKETCHW.SCROLLFN 73272 . 77465) (SKETCHW.RESHAPEFN 77467 . 79725) (SK.UPDATE.EVENT.SELECTION 
-79727 . 81782) (LIGHTGRAYWINDOW 81784 . 81947) (SK.ADD.SPACES 81949 . 82695) (SK.SKETCH.MENU 82697 . 
-83019) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 83021 . 83873) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 83875 . 84835)
- (SK.RETURN.TTY 84837 . 85205) (SK.TAKE.TTY 85207 . 85537)) (85593 108921 (SKETCH.COMMANDMENU 85603 . 
-85940) (SKETCH.COMMANDMENU.ITEMS 85942 . 106025) (CREATE.SKETCHW.COMMANDMENU 106027 . 106447) (
-SKETCHW.SELECTIONFN 106449 . 107552) (SKETCH.MONITORLOCK 107554 . 108025) (SK.EVAL.AS.PROCESS 108027
- . 108640) (SK.EVAL.WITH.LOCK 108642 . 108919)) (108922 116726 (SK.FIX.MENU 108932 . 110026) (
-SK.SET.UP.MENUS 110028 . 112329) (SK.INSURE.HAS.MENU 112331 . 112993) (SK.CREATE.STANDARD.MENU 112995
- . 113440) (SK.ADD.ITEM.TO.MENU 113442 . 114117) (SK.GET.VIEWER.POPUP.MENU 114119 . 116320) (
-SK.CLEAR.POPUP.MENU 116322 . 116724)) (116782 125604 (SKETCH.CREATE 116792 . 117578) (GETSKETCHPROP 
-117580 . 120637) (PUTSKETCHPROP 120639 . 124571) (CREATE.DEFAULT.SKETCH.CONTEXT 124573 . 125602)) (
-125770 148666 (SK.COPY.BUTTONEVENTFN 125780 . 137008) (SK.BUTTONEVENT.MARK 137010 . 137393) (
-SK.BUILD.IMAGEOBJ 137395 . 147310) (SK.BUTTONEVENT.OVERP 147312 . 147935) (SK.BUTTONEVENT.SAME.KEYS 
-147937 . 148664)) (148945 174760 (SK.SEL.AND.CHANGE 148955 . 149247) (SK.CHECK.WHENCHANGEDFN 149249 . 
-149955) (SK.CHECK.PRECHANGEFN 149957 . 150558) (SK.CHANGE.ELT 150560 . 150752) (SK.CHANGE.THING 150754
- . 152005) (SKETCH.CHANGE.ELEMENTS 152007 . 153190) (SK.APPLY.SINGLE.CHANGEFN 153192 . 153765) (
-SK.DO.CHANGESPECS 153767 . 155426) (SK.VIEWER.FROM.SKETCH.ARG 155428 . 155870) (SK.DO.CHANGESPEC1 
-155872 . 157747) (SK.CHANGEFN 157749 . 158329) (SK.READCHANGEFN 158331 . 158790) (SK.DEFAULT.CHANGEFN 
-158792 . 161264) (CHANGEABLEFIELDITEMS 161266 . 161913) (SK.APPLY.CHANGE.COMMAND 161915 . 162532) (
-SK.DO.AND.RECORD.CHANGES 162534 . 163931) (SK.APPLY.CHANGE.COMMAND1 163933 . 165421) (
-SK.ELEMENTS.CHANGEFN 165423 . 167747) (READ.POINT.TO.ADD 167749 . 168693) (GLOBAL.KNOT.FROM.LOCAL 
-168695 . 169155) (SK.ADD.KNOT.TO.ELEMENT 169157 . 170101) (SK.GROUP.CHANGEFN 170103 . 171315) (
-SK.GROUP.CHANGEFN1 171317 . 174758)) (174927 188660 (ADD.ELEMENT.TO.SKETCH 174937 . 176643) (
-ADD.SKETCH.VIEWER 176645 . 177313) (REMOVE.SKETCH.VIEWER 177315 . 177928) (ALL.SKETCH.VIEWERS 177930
- . 178170) (SKETCH.ALL.VIEWERS 178172 . 178432) (VIEWER.BUCKET 178434 . 178585) (ELT.INSIDE.REGION? 
-178587 . 178914) (ELT.INSIDE.SKWP 178916 . 179207) (SCALE.FROM.SKW 179209 . 179459) (
-SK.ADDELT.TO.WINDOW 179461 . 180321) (SK.CALC.REGION.VIEWED 180323 . 180701) (SK.DRAWFIGURE 180703 . 
-181992) (SK.DRAWFIGURE1 181994 . 182378) (SK.LOCAL.FROM.GLOBAL 182380 . 183615) (SKETCH.REGION.VIEWED 
-183617 . 186304) (SKETCH.VIEW.FROM.NAME 186306 . 186736) (SK.UPDATE.REGION.VIEWED 186738 . 187130) (
-SKETCH.ADD.AND.DISPLAY 187132 . 187540) (SKETCH.ADD.AND.DISPLAY1 187542 . 187980) (SK.ADD.ITEM 187982
- . 188314) (SKETCHW.ADD.INSTANCE 188316 . 188658)) (188701 201889 (SK.SEL.AND.DELETE 188711 . 189099) 
-(SK.ERASE.AND.DELETE.ITEM 189101 . 189520) (REMOVE.ELEMENT.FROM.SKETCH 189522 . 190633) (
-SK.DELETE.ELEMENT 190635 . 191193) (SK.DELETE.ELEMENT2 191195 . 191856) (SK.DELETE.KNOT 191858 . 
-192149) (SK.SEL.AND.DELETE.KNOT 192151 . 193276) (SK.DELETE.ELEMENT.KNOT 193278 . 196485) (
-SK.CHECK.WHENDELETEDFN 196487 . 197267) (SK.CHECK.PREEDITFN 197269 . 197753) (
-SK.CHECK.END.INITIAL.EDIT 197755 . 198289) (SK.CHECK.WHENPOINTDELETEDFN 198291 . 199087) (SK.ERASE.ELT
- 199089 . 199425) (SK.DELETE.ELT 199427 . 199802) (SK.DELETE.ITEM 199804 . 200212) (DELFROMTCONC 
-200214 . 201887)) (201928 215762 (SK.COPY.ELT 201938 . 202308) (SK.SEL.AND.COPY 202310 . 202693) (
-SK.COPY.ELEMENTS 202695 . 208323) (SK.ADD.COPY.OF.ELEMENTS 208325 . 210092) (
-SK.GLOBAL.FROM.LOCAL.ELEMENTS 210094 . 210334) (SK.COPY.ITEM 210336 . 211133) (SK.INSERT.SKETCH 211135
- . 215760)) (215802 245823 (SK.MOVE.ELT 215812 . 216087) (SK.MOVE.ELT.OR.PT 216089 . 216402) (
-SK.APPLY.DEFAULT.MOVE 216404 . 216838) (SK.SEL.AND.MOVE 216840 . 217387) (SK.MOVE.ELEMENTS 217389 . 
-228261) (SKETCH.MOVE.ELEMENTS 228263 . 230194) (SKETCH.COPY.ELEMENTS 230196 . 232243) (
-\SKETCH.COPY.ELEMENT 232245 . 232970) (SK.TRANSLATE.ELEMENT 232972 . 233455) (SK.COPY.GLOBAL.ELEMENT 
-233457 . 233668) (SK.MAKE.ELEMENT.MOVE.ARG 233670 . 234290) (SK.MAKE.ELEMENTS.MOVE.ARG 234292 . 234814
-) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 234816 . 235885) (SK.SHOW.FIG.FROM.INFO 235887 . 236255) (
-SK.MOVE.THING 236257 . 237163) (UPDATE.ELEMENT.IN.SKETCH 237165 . 239220) (SK.UPDATE.ELEMENT 239222 . 
-240781) (SK.UPDATE.ELEMENTS 240783 . 241502) (SK.UPDATE.ELEMENT1 241504 . 245404) (
-SK.MOVE.ELEMENT.POINT 245406 . 245821)) (245886 268175 (SK.MOVE.POINTS 245896 . 246183) (
-SK.SEL.AND.MOVE.POINTS 246185 . 246490) (SK.DO.MOVE.ELEMENT.POINTS 246492 . 255149) (
-SK.MOVE.ITEM.POINTS 255151 . 256822) (SK.TRANSLATEPTSFN 256824 . 257208) (SK.TRANSLATE.POINTS 257210
- . 258111) (SK.SELECT.MULTIPLE.POINTS 258113 . 263753) (SK.CONTROL.POINTS.IN.REGION 263755 . 265176) (
-SK.ADD.PT.SELECTION 265178 . 265642) (SK.REMOVE.PT.SELECTION 265644 . 266261) (SK.ADD.POINT 266263 . 
-266886) (SK.ELTS.CONTAINING.PTS 266888 . 267513) (SK.HOTSPOTS.NOT.ON.LIST 267515 . 268173)) (268333 
-271129 (SK.SET.MOVE.MODE 268343 . 269014) (SK.SET.MOVE.MODE.POINTS 269016 . 269355) (
-SK.SET.MOVE.MODE.ELEMENTS 269357 . 269701) (SK.SET.MOVE.MODE.COMBINED 269703 . 270053) (READMOVEMODE 
-270055 . 271127)) (271130 289885 (SK.ALIGN.POINTS 271140 . 271430) (SK.SEL.AND.ALIGN.POINTS 271432 . 
-271741) (SK.ALIGN.POINTS.LEFT 271743 . 272046) (SK.ALIGN.POINTS.RIGHT 272048 . 272353) (
-SK.ALIGN.POINTS.TOP 272355 . 272656) (SK.ALIGN.POINTS.BOTTOM 272658 . 272965) (
-SK.EVEN.SPACE.POINTS.IN.X 272967 . 273287) (SK.EVEN.SPACE.POINTS.IN.Y 273289 . 273609) (
-SK.DO.ALIGN.POINTS 273611 . 284233) (SK.NTH.CONTROL.POINT 284235 . 284696) (
-SK.GET.SELECTED.ELEMENT.STRUCTURE 284698 . 285364) (SK.CORRESPONDING.CONTROL.PT 285366 . 285920) (
-SK.CONTROL.POINT.NUMBER 285922 . 286292) (SK.DO.ALIGN.SETVALUE 286294 . 289883)) (289949 303381 (
-SKETCH.CREATE.GROUP 289959 . 290448) (SK.CREATE.GROUP1 290450 . 290997) (SK.UPDATE.GROUP.AFTER.CHANGE 
-290999 . 291788) (SK.GROUP.ELTS 291790 . 292071) (SK.SEL.AND.GROUP 292073 . 292459) (SK.GROUP.ELEMENTS
- 292461 . 294110) (SK.UNGROUP.ELT 294112 . 294396) (SK.SEL.AND.UNGROUP 294398 . 296067) (
-SK.UNGROUP.ELEMENT 296069 . 297005) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 297007 . 297929) (
-SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 297931 . 298942) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 298944 . 
-300284) (SK.UNIONREGIONS 300286 . 302652) (SKETCH.REGION.OF.SKETCH 302654 . 303070) (SK.FLASHREGION 
-303072 . 303379)) (303382 316853 (INIT.GROUP.ELEMENT 303392 . 304264) (GROUP.DRAWFN 304266 . 304716) (
-GROUP.EXPANDFN 304718 . 306281) (GROUP.INSIDEFN 306283 . 306692) (GROUP.REGIONFN 306694 . 307089) (
-GROUP.GLOBALREGIONFN 307091 . 307409) (GROUP.TRANSLATEFN 307411 . 309443) (GROUP.TRANSFORMFN 309445 . 
-312925) (GROUP.READCHANGEFN 312927 . 316851)) (316854 317862 (REGION.CENTER 316864 . 317465) (
-REMOVE.LAST 317467 . 317860)) (317915 323022 (SK.MOVE.GROUP.CONTROL.PT 317925 . 318216) (
-SK.SEL.AND.MOVE.CONTROL.PT 318218 . 319622) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 319624 . 321697) (
-SK.READ.NEW.GROUP.CONTROL.PT 321699 . 323020)) (323281 327905 (SK.DO.GROUP 323291 . 324743) (
-SK.CHECK.WHENGROUPEDFN 324745 . 325455) (SK.DO.UNGROUP 325457 . 326662) (SK.CHECK.WHENUNGROUPEDFN 
-326664 . 327251) (SK.GROUP.UNDO 327253 . 327576) (SK.UNGROUP.UNDO 327578 . 327903)) (328146 333068 (
-SK.FREEZE.ELTS 328156 . 328440) (SK.SEL.AND.FREEZE 328442 . 328832) (SK.FREEZE.ELEMENTS 328834 . 
-329385) (SK.UNFREEZE.ELT 329387 . 329676) (SK.SEL.AND.UNFREEZE 329678 . 331214) (SK.UNFREEZE.ELEMENTS 
-331216 . 331775) (SK.FREEZE.UNDO 331777 . 332022) (SK.UNFREEZE.UNDO 332024 . 332271) (SK.DO.FREEZE 
-332273 . 332666) (SK.DO.UNFREEZE 332668 . 333066)) (333298 343108 (SKETCH.ELEMENTS.OF.SKETCH 333308 . 
-334143) (SKETCH.LIST.OF.ELEMENTS 334145 . 334863) (SKETCH.ADD.ELEMENT 334865 . 335940) (
-SKETCH.DELETE.ELEMENT 335942 . 337674) (DELFROMGROUPELT 337676 . 338476) (SKETCH.ELEMENT.TYPE 338478
- . 338827) (SKETCH.ELEMENT.CHANGED 338829 . 340397) (SK.ELEMENT.CHANGED1 340399 . 341050) (
-SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 341052 . 343106)) (343162 347774 (INSURE.SKETCH 343172 . 345787)
- (LOCALSPECS.FROM.VIEWER 345789 . 346149) (SK.LOCAL.ELT.FROM.GLOBALPART 346151 . 346619) (
-SKETCH.FROM.VIEWER 346621 . 346855) (INSPECT.SKETCH 346857 . 347182) (ELT.INSIDE.SKETCHWP 347184 . 
-347457) (SK.INSIDE.REGION 347459 . 347772)) (347775 352105 (MAPSKETCHSPECS 347785 . 348406) (
-MAPCOLLECTSKETCHSPECS 348408 . 349157) (MAPSKETCHSPECSUNTIL 349159 . 349967) (MAPGLOBALSKETCHSPECS 
-349969 . 350670) (MAPGLOBALSKETCHELEMENTS 350672 . 352103)) (352167 378059 (SK.ADD.SELECTION 352177 . 
-352917) (SK.COPY.INSERTFN 352919 . 356550) (SCREENELEMENTP 356552 . 357025) (SK.ITEM.REGION 357027 . 
-357514) (SK.ELEMENT.GLOBAL.REGION 357516 . 358044) (SK.LOCAL.ITEMS.IN.REGION 358046 . 360025) (
-SK.REGIONFN 360027 . 360349) (SK.GLOBAL.REGIONFN 360351 . 360709) (SK.REMOVE.SELECTION 360711 . 361439
-) (SK.SELECT.MULTIPLE.ITEMS 361441 . 371883) (SKETCH.GET.ELEMENTS 371885 . 373308) (SK.PUT.MARKS.UP 
-373310 . 373649) (SK.TAKE.MARKS.DOWN 373651 . 373990) (SK.TRANSLATE.GLOBALPART 373992 . 376119) (
-SK.TRANSLATE.ITEM 376121 . 377048) (SK.TRANSLATEFN 377050 . 377246) (TRANSLATE.SKETCH 377248 . 378057)
-) (378325 381232 (SK.INPUT.SCALE 378335 . 379182) (SK.UPDATE.SKETCHCONTEXT 379184 . 379781) (
-SK.SET.INPUT.SCALE 379783 . 380432) (SK.SET.INPUT.SCALE.CURRENT 380434 . 380725) (
-SK.SET.INPUT.SCALE.VALUE 380727 . 381230)) (381283 383195 (SK.SET.FEEDBACK.MODE 381293 . 382599) (
-SK.SET.FEEDBACK.POINT 382601 . 382769) (SK.SET.FEEDBACK.VERBOSE 382771 . 382940) (
-SK.SET.FEEDBACK.ALWAYS 382942 . 383193)) (383346 384623 (SKETCH.TITLE 383356 . 383619) (
-SK.SHRINK.ICONCREATE 383621 . 384621)) (390313 393127 (READBRUSHSHAPE 390323 . 390782) (READ.FUNCTION 
-390784 . 391299) (READBRUSHSIZE 391301 . 391759) (READANGLE 391761 . 392253) (READARCDIRECTION 392255
- . 393125)) (393128 403539 (SK.CHANGE.DASHING 393138 . 397086) (READ.AND.SAVE.NEW.DASHING 397088 . 
-398856) (READ.NEW.DASHING 398858 . 400598) (READ.DASHING.CHANGE 400600 . 402075) (SK.CACHE.DASHING 
-402077 . 403079) (SK.DASHING.LABEL 403081 . 403537)) (403540 407245 (READ.FILLING.CHANGE 403550 . 
-405531) (SK.CACHE.FILLING 405533 . 406251) (READ.AND.SAVE.NEW.FILLING 406253 . 406851) (
-SK.FILLING.LABEL 406853 . 407243)) (407629 443882 (SK.GETGLOBALPOSITION 407639 . 407944) (
-SKETCH.TRACK.ELEMENTS 407946 . 411466) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 411468 . 412027) (
-MAP.SKETCH.ELEMENTS.INTO.VIEWER 412029 . 412421) (MAP.GLOBAL.POSITION.INTO.VIEWER 412423 . 412803) (
-SKETCH.TO.VIEWER.POSITION 412805 . 413164) (SKETCH.TRACK.IMAGE 413166 . 414020) (SK.TRACK.IMAGE1 
-414022 . 415434) (MAP.VIEWER.XY.INTO.GLOBAL 415436 . 416430) (SK.SET.POSITION 416432 . 416768) (
-MAP.VIEWER.PT.INTO.GLOBAL 416770 . 417876) (VIEWER.TO.SKETCH.POSITION 417878 . 418513) (
-SK.INSURE.SCALE 418515 . 418775) (SKETCH.TO.VIEWER.REGION 418777 . 419583) (VIEWER.TO.SKETCH.REGION 
-419585 . 419923) (SK.READ.POINT.WITH.FEEDBACK 419925 . 430928) (SKETCH.GET.POSITION 430930 . 432810) (
-\CLOBBER.POSITION 432812 . 433260) (NEAREST.HOT.SPOT 433262 . 434790) (GETWREGION 434792 . 435553) (
-GET.BITMAP.POSITION 435555 . 436339) (SK.TRACK.BITMAP1 436341 . 443880)) (444451 475337 (
-SK.BRING.UP.POSITION.PAD 444461 . 450321) (SK.PAD.READER.POSITION 450323 . 451972) (
-SK.POSITION.READER.REPAINTFN 451974 . 453758) (SK.POSITION.PAD.FROM.VIEWER 453760 . 455102) (
-SK.INIT.POSITION.NUMBER.PAD.MENU 455104 . 455454) (SK.READ.POSITION.PAD.HANDLER 455456 . 461188) (
-DISPLAY.POSITION.READER.TOTAL 461190 . 463488) (POSITION.PAD.READER.HANDLER 463490 . 471533) (
-POSITIONPAD.HELDFN 471535 . 473019) (\POSITION.PAD.ADD.DIGIT.MENU 473021 . 474600) (
-\POSITION.READER.NUMBERPAD 474602 . 475335)) (476963 479641 (SK.DRAWFN 476973 . 477339) (
-SK.TRANSFORMFN 477341 . 477722) (SK.EXPANDFN 477724 . 478001) (SK.INPUT 478003 . 478384) (SK.INSIDEFN 
-478386 . 479026) (SK.UPDATEFN 479028 . 479639)) (485309 489254 (SK.CHECK.SKETCH.VERSION 485319 . 
-486559) (SK.INSURE.RECORD.LENGTH 486561 . 488044) (SK.INSURE.HAS.LENGTH 488046 . 488784) (
-SK.RECORD.LENGTH 488786 . 488960) (SK.SET.RECORD.LENGTHS 488962 . 489252)) (489999 490886 (
-SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 490009 . 490884)))))
+  (FILEMAP (NIL (22797 85993 (SKETCH 22807 . 24912) (SKETCH.FROM.A.FILE 24914 . 25229) (SKETCHW.CREATE 
+25231 . 29805) (SKETCH.RESET 29807 . 31329) (SKETCHW.FIG.CHANGED 31331 . 31671) (SK.WINDOW.TITLE 31673
+ . 32060) (EDITSLIDE 32062 . 32468) (EDITSKETCH 32470 . 32794) (SK.PUT.ON.FILE 32796 . 34248) (
+SK.OUTPUT.FILE.NAME 34250 . 34735) (SKETCH.PUT 34737 . 37635) (SK.GET.FROM.FILE 37637 . 38530) (
+SK.INCLUDE.FILE 38532 . 41040) (SK.GET.IMAGEOBJ.FROM.FILE 41042 . 43245) (SKETCH.GET 43247 . 43554) (
+ADD.SKETCH.TO.VIEWER 43556 . 46142) (SK.ADD.ELEMENTS.TO.SKETCH 46144 . 46658) (SKETCH.SET.A.DEFAULT 
+46660 . 53818) (SK.POPUP.SELECTIONFN 53820 . 54362) (GETSKETCHWREGION 54364 . 54570) (SK.ADD.ELEMENT 
+54572 . 56151) (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH 56153 . 57547) (SK.ELTS.BY.PRIORITY 57549 . 57845) (
+SK.ORDER.ELEMENTS 57847 . 58114) (SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 58116 . 59610) (
+SK.ADD.ELEMENTS 59612 . 60136) (SK.CHECK.WHENADDEDFN 60138 . 60868) (SK.APPLY.MENU.COMMAND 60870 . 
+61668) (SK.DELETE.ELEMENT1 61670 . 63248) (SK.MARK.DIRTY 63250 . 63916) (SK.MARK.UNDIRTY 63918 . 64249
+) (SK.MENU.AND.RETURN.FIELD 64251 . 64916) (SKETCH.SET.BRUSH.SHAPE 64918 . 65503) (
+SKETCH.SET.BRUSH.SIZE 65505 . 66011) (SKETCHW.CLOSEFN 66013 . 67804) (SK.CONFIRM.DESTRUCTION 67806 . 
+68805) (SKETCHW.OUTFN 68807 . 69071) (SKETCHW.REOPENFN 69073 . 69485) (MAKE.LOCAL.SKETCH 69487 . 70217
+) (MAP.SKETCHSPEC.INTO.VIEWER 70219 . 71429) (SKETCHW.REPAINTFN 71431 . 72259) (SKETCHW.REPAINTFN1 
+72261 . 73200) (SK.DRAWFIGURE.IF 73202 . 73724) (SKETCHW.SCROLLFN 73726 . 77919) (SKETCHW.RESHAPEFN 
+77921 . 80179) (SK.UPDATE.EVENT.SELECTION 80181 . 82236) (LIGHTGRAYWINDOW 82238 . 82401) (
+SK.ADD.SPACES 82403 . 83149) (SK.SKETCH.MENU 83151 . 83473) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 83475 . 
+84327) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 84329 . 85289) (SK.RETURN.TTY 85291 . 85659) (SK.TAKE.TTY 
+85661 . 85991)) (86047 109375 (SKETCH.COMMANDMENU 86057 . 86394) (SKETCH.COMMANDMENU.ITEMS 86396 . 
+106479) (CREATE.SKETCHW.COMMANDMENU 106481 . 106901) (SKETCHW.SELECTIONFN 106903 . 108006) (
+SKETCH.MONITORLOCK 108008 . 108479) (SK.EVAL.AS.PROCESS 108481 . 109094) (SK.EVAL.WITH.LOCK 109096 . 
+109373)) (109376 117180 (SK.FIX.MENU 109386 . 110480) (SK.SET.UP.MENUS 110482 . 112783) (
+SK.INSURE.HAS.MENU 112785 . 113447) (SK.CREATE.STANDARD.MENU 113449 . 113894) (SK.ADD.ITEM.TO.MENU 
+113896 . 114571) (SK.GET.VIEWER.POPUP.MENU 114573 . 116774) (SK.CLEAR.POPUP.MENU 116776 . 117178)) (
+117236 126058 (SKETCH.CREATE 117246 . 118032) (GETSKETCHPROP 118034 . 121091) (PUTSKETCHPROP 121093 . 
+125025) (CREATE.DEFAULT.SKETCH.CONTEXT 125027 . 126056)) (126224 149120 (SK.COPY.BUTTONEVENTFN 126234
+ . 137462) (SK.BUTTONEVENT.MARK 137464 . 137847) (SK.BUILD.IMAGEOBJ 137849 . 147764) (
+SK.BUTTONEVENT.OVERP 147766 . 148389) (SK.BUTTONEVENT.SAME.KEYS 148391 . 149118)) (149399 175214 (
+SK.SEL.AND.CHANGE 149409 . 149701) (SK.CHECK.WHENCHANGEDFN 149703 . 150409) (SK.CHECK.PRECHANGEFN 
+150411 . 151012) (SK.CHANGE.ELT 151014 . 151206) (SK.CHANGE.THING 151208 . 152459) (
+SKETCH.CHANGE.ELEMENTS 152461 . 153644) (SK.APPLY.SINGLE.CHANGEFN 153646 . 154219) (SK.DO.CHANGESPECS 
+154221 . 155880) (SK.VIEWER.FROM.SKETCH.ARG 155882 . 156324) (SK.DO.CHANGESPEC1 156326 . 158201) (
+SK.CHANGEFN 158203 . 158783) (SK.READCHANGEFN 158785 . 159244) (SK.DEFAULT.CHANGEFN 159246 . 161718) (
+CHANGEABLEFIELDITEMS 161720 . 162367) (SK.APPLY.CHANGE.COMMAND 162369 . 162986) (
+SK.DO.AND.RECORD.CHANGES 162988 . 164385) (SK.APPLY.CHANGE.COMMAND1 164387 . 165875) (
+SK.ELEMENTS.CHANGEFN 165877 . 168201) (READ.POINT.TO.ADD 168203 . 169147) (GLOBAL.KNOT.FROM.LOCAL 
+169149 . 169609) (SK.ADD.KNOT.TO.ELEMENT 169611 . 170555) (SK.GROUP.CHANGEFN 170557 . 171769) (
+SK.GROUP.CHANGEFN1 171771 . 175212)) (175381 189114 (ADD.ELEMENT.TO.SKETCH 175391 . 177097) (
+ADD.SKETCH.VIEWER 177099 . 177767) (REMOVE.SKETCH.VIEWER 177769 . 178382) (ALL.SKETCH.VIEWERS 178384
+ . 178624) (SKETCH.ALL.VIEWERS 178626 . 178886) (VIEWER.BUCKET 178888 . 179039) (ELT.INSIDE.REGION? 
+179041 . 179368) (ELT.INSIDE.SKWP 179370 . 179661) (SCALE.FROM.SKW 179663 . 179913) (
+SK.ADDELT.TO.WINDOW 179915 . 180775) (SK.CALC.REGION.VIEWED 180777 . 181155) (SK.DRAWFIGURE 181157 . 
+182446) (SK.DRAWFIGURE1 182448 . 182832) (SK.LOCAL.FROM.GLOBAL 182834 . 184069) (SKETCH.REGION.VIEWED 
+184071 . 186758) (SKETCH.VIEW.FROM.NAME 186760 . 187190) (SK.UPDATE.REGION.VIEWED 187192 . 187584) (
+SKETCH.ADD.AND.DISPLAY 187586 . 187994) (SKETCH.ADD.AND.DISPLAY1 187996 . 188434) (SK.ADD.ITEM 188436
+ . 188768) (SKETCHW.ADD.INSTANCE 188770 . 189112)) (189155 202343 (SK.SEL.AND.DELETE 189165 . 189553) 
+(SK.ERASE.AND.DELETE.ITEM 189555 . 189974) (REMOVE.ELEMENT.FROM.SKETCH 189976 . 191087) (
+SK.DELETE.ELEMENT 191089 . 191647) (SK.DELETE.ELEMENT2 191649 . 192310) (SK.DELETE.KNOT 192312 . 
+192603) (SK.SEL.AND.DELETE.KNOT 192605 . 193730) (SK.DELETE.ELEMENT.KNOT 193732 . 196939) (
+SK.CHECK.WHENDELETEDFN 196941 . 197721) (SK.CHECK.PREEDITFN 197723 . 198207) (
+SK.CHECK.END.INITIAL.EDIT 198209 . 198743) (SK.CHECK.WHENPOINTDELETEDFN 198745 . 199541) (SK.ERASE.ELT
+ 199543 . 199879) (SK.DELETE.ELT 199881 . 200256) (SK.DELETE.ITEM 200258 . 200666) (DELFROMTCONC 
+200668 . 202341)) (202382 216216 (SK.COPY.ELT 202392 . 202762) (SK.SEL.AND.COPY 202764 . 203147) (
+SK.COPY.ELEMENTS 203149 . 208777) (SK.ADD.COPY.OF.ELEMENTS 208779 . 210546) (
+SK.GLOBAL.FROM.LOCAL.ELEMENTS 210548 . 210788) (SK.COPY.ITEM 210790 . 211587) (SK.INSERT.SKETCH 211589
+ . 216214)) (216256 246277 (SK.MOVE.ELT 216266 . 216541) (SK.MOVE.ELT.OR.PT 216543 . 216856) (
+SK.APPLY.DEFAULT.MOVE 216858 . 217292) (SK.SEL.AND.MOVE 217294 . 217841) (SK.MOVE.ELEMENTS 217843 . 
+228715) (SKETCH.MOVE.ELEMENTS 228717 . 230648) (SKETCH.COPY.ELEMENTS 230650 . 232697) (
+\SKETCH.COPY.ELEMENT 232699 . 233424) (SK.TRANSLATE.ELEMENT 233426 . 233909) (SK.COPY.GLOBAL.ELEMENT 
+233911 . 234122) (SK.MAKE.ELEMENT.MOVE.ARG 234124 . 234744) (SK.MAKE.ELEMENTS.MOVE.ARG 234746 . 235268
+) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 235270 . 236339) (SK.SHOW.FIG.FROM.INFO 236341 . 236709) (
+SK.MOVE.THING 236711 . 237617) (UPDATE.ELEMENT.IN.SKETCH 237619 . 239674) (SK.UPDATE.ELEMENT 239676 . 
+241235) (SK.UPDATE.ELEMENTS 241237 . 241956) (SK.UPDATE.ELEMENT1 241958 . 245858) (
+SK.MOVE.ELEMENT.POINT 245860 . 246275)) (246340 268629 (SK.MOVE.POINTS 246350 . 246637) (
+SK.SEL.AND.MOVE.POINTS 246639 . 246944) (SK.DO.MOVE.ELEMENT.POINTS 246946 . 255603) (
+SK.MOVE.ITEM.POINTS 255605 . 257276) (SK.TRANSLATEPTSFN 257278 . 257662) (SK.TRANSLATE.POINTS 257664
+ . 258565) (SK.SELECT.MULTIPLE.POINTS 258567 . 264207) (SK.CONTROL.POINTS.IN.REGION 264209 . 265630) (
+SK.ADD.PT.SELECTION 265632 . 266096) (SK.REMOVE.PT.SELECTION 266098 . 266715) (SK.ADD.POINT 266717 . 
+267340) (SK.ELTS.CONTAINING.PTS 267342 . 267967) (SK.HOTSPOTS.NOT.ON.LIST 267969 . 268627)) (268787 
+271583 (SK.SET.MOVE.MODE 268797 . 269468) (SK.SET.MOVE.MODE.POINTS 269470 . 269809) (
+SK.SET.MOVE.MODE.ELEMENTS 269811 . 270155) (SK.SET.MOVE.MODE.COMBINED 270157 . 270507) (READMOVEMODE 
+270509 . 271581)) (271584 290339 (SK.ALIGN.POINTS 271594 . 271884) (SK.SEL.AND.ALIGN.POINTS 271886 . 
+272195) (SK.ALIGN.POINTS.LEFT 272197 . 272500) (SK.ALIGN.POINTS.RIGHT 272502 . 272807) (
+SK.ALIGN.POINTS.TOP 272809 . 273110) (SK.ALIGN.POINTS.BOTTOM 273112 . 273419) (
+SK.EVEN.SPACE.POINTS.IN.X 273421 . 273741) (SK.EVEN.SPACE.POINTS.IN.Y 273743 . 274063) (
+SK.DO.ALIGN.POINTS 274065 . 284687) (SK.NTH.CONTROL.POINT 284689 . 285150) (
+SK.GET.SELECTED.ELEMENT.STRUCTURE 285152 . 285818) (SK.CORRESPONDING.CONTROL.PT 285820 . 286374) (
+SK.CONTROL.POINT.NUMBER 286376 . 286746) (SK.DO.ALIGN.SETVALUE 286748 . 290337)) (290403 303835 (
+SKETCH.CREATE.GROUP 290413 . 290902) (SK.CREATE.GROUP1 290904 . 291451) (SK.UPDATE.GROUP.AFTER.CHANGE 
+291453 . 292242) (SK.GROUP.ELTS 292244 . 292525) (SK.SEL.AND.GROUP 292527 . 292913) (SK.GROUP.ELEMENTS
+ 292915 . 294564) (SK.UNGROUP.ELT 294566 . 294850) (SK.SEL.AND.UNGROUP 294852 . 296521) (
+SK.UNGROUP.ELEMENT 296523 . 297459) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 297461 . 298383) (
+SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 298385 . 299396) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 299398 . 
+300738) (SK.UNIONREGIONS 300740 . 303106) (SKETCH.REGION.OF.SKETCH 303108 . 303524) (SK.FLASHREGION 
+303526 . 303833)) (303836 317307 (INIT.GROUP.ELEMENT 303846 . 304718) (GROUP.DRAWFN 304720 . 305170) (
+GROUP.EXPANDFN 305172 . 306735) (GROUP.INSIDEFN 306737 . 307146) (GROUP.REGIONFN 307148 . 307543) (
+GROUP.GLOBALREGIONFN 307545 . 307863) (GROUP.TRANSLATEFN 307865 . 309897) (GROUP.TRANSFORMFN 309899 . 
+313379) (GROUP.READCHANGEFN 313381 . 317305)) (317308 318316 (REGION.CENTER 317318 . 317919) (
+REMOVE.LAST 317921 . 318314)) (318369 323476 (SK.MOVE.GROUP.CONTROL.PT 318379 . 318670) (
+SK.SEL.AND.MOVE.CONTROL.PT 318672 . 320076) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 320078 . 322151) (
+SK.READ.NEW.GROUP.CONTROL.PT 322153 . 323474)) (323735 328359 (SK.DO.GROUP 323745 . 325197) (
+SK.CHECK.WHENGROUPEDFN 325199 . 325909) (SK.DO.UNGROUP 325911 . 327116) (SK.CHECK.WHENUNGROUPEDFN 
+327118 . 327705) (SK.GROUP.UNDO 327707 . 328030) (SK.UNGROUP.UNDO 328032 . 328357)) (328600 333522 (
+SK.FREEZE.ELTS 328610 . 328894) (SK.SEL.AND.FREEZE 328896 . 329286) (SK.FREEZE.ELEMENTS 329288 . 
+329839) (SK.UNFREEZE.ELT 329841 . 330130) (SK.SEL.AND.UNFREEZE 330132 . 331668) (SK.UNFREEZE.ELEMENTS 
+331670 . 332229) (SK.FREEZE.UNDO 332231 . 332476) (SK.UNFREEZE.UNDO 332478 . 332725) (SK.DO.FREEZE 
+332727 . 333120) (SK.DO.UNFREEZE 333122 . 333520)) (333752 343562 (SKETCH.ELEMENTS.OF.SKETCH 333762 . 
+334597) (SKETCH.LIST.OF.ELEMENTS 334599 . 335317) (SKETCH.ADD.ELEMENT 335319 . 336394) (
+SKETCH.DELETE.ELEMENT 336396 . 338128) (DELFROMGROUPELT 338130 . 338930) (SKETCH.ELEMENT.TYPE 338932
+ . 339281) (SKETCH.ELEMENT.CHANGED 339283 . 340851) (SK.ELEMENT.CHANGED1 340853 . 341504) (
+SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 341506 . 343560)) (343616 348228 (INSURE.SKETCH 343626 . 346241)
+ (LOCALSPECS.FROM.VIEWER 346243 . 346603) (SK.LOCAL.ELT.FROM.GLOBALPART 346605 . 347073) (
+SKETCH.FROM.VIEWER 347075 . 347309) (INSPECT.SKETCH 347311 . 347636) (ELT.INSIDE.SKETCHWP 347638 . 
+347911) (SK.INSIDE.REGION 347913 . 348226)) (348229 352559 (MAPSKETCHSPECS 348239 . 348860) (
+MAPCOLLECTSKETCHSPECS 348862 . 349611) (MAPSKETCHSPECSUNTIL 349613 . 350421) (MAPGLOBALSKETCHSPECS 
+350423 . 351124) (MAPGLOBALSKETCHELEMENTS 351126 . 352557)) (352621 378513 (SK.ADD.SELECTION 352631 . 
+353371) (SK.COPY.INSERTFN 353373 . 357004) (SCREENELEMENTP 357006 . 357479) (SK.ITEM.REGION 357481 . 
+357968) (SK.ELEMENT.GLOBAL.REGION 357970 . 358498) (SK.LOCAL.ITEMS.IN.REGION 358500 . 360479) (
+SK.REGIONFN 360481 . 360803) (SK.GLOBAL.REGIONFN 360805 . 361163) (SK.REMOVE.SELECTION 361165 . 361893
+) (SK.SELECT.MULTIPLE.ITEMS 361895 . 372337) (SKETCH.GET.ELEMENTS 372339 . 373762) (SK.PUT.MARKS.UP 
+373764 . 374103) (SK.TAKE.MARKS.DOWN 374105 . 374444) (SK.TRANSLATE.GLOBALPART 374446 . 376573) (
+SK.TRANSLATE.ITEM 376575 . 377502) (SK.TRANSLATEFN 377504 . 377700) (TRANSLATE.SKETCH 377702 . 378511)
+) (378779 381686 (SK.INPUT.SCALE 378789 . 379636) (SK.UPDATE.SKETCHCONTEXT 379638 . 380235) (
+SK.SET.INPUT.SCALE 380237 . 380886) (SK.SET.INPUT.SCALE.CURRENT 380888 . 381179) (
+SK.SET.INPUT.SCALE.VALUE 381181 . 381684)) (381737 383649 (SK.SET.FEEDBACK.MODE 381747 . 383053) (
+SK.SET.FEEDBACK.POINT 383055 . 383223) (SK.SET.FEEDBACK.VERBOSE 383225 . 383394) (
+SK.SET.FEEDBACK.ALWAYS 383396 . 383647)) (383800 385178 (SKETCH.TITLE 383810 . 384174) (
+SK.SHRINK.ICONCREATE 384176 . 385176)) (390868 393682 (READBRUSHSHAPE 390878 . 391337) (READ.FUNCTION 
+391339 . 391854) (READBRUSHSIZE 391856 . 392314) (READANGLE 392316 . 392808) (READARCDIRECTION 392810
+ . 393680)) (393683 404094 (SK.CHANGE.DASHING 393693 . 397641) (READ.AND.SAVE.NEW.DASHING 397643 . 
+399411) (READ.NEW.DASHING 399413 . 401153) (READ.DASHING.CHANGE 401155 . 402630) (SK.CACHE.DASHING 
+402632 . 403634) (SK.DASHING.LABEL 403636 . 404092)) (404095 407800 (READ.FILLING.CHANGE 404105 . 
+406086) (SK.CACHE.FILLING 406088 . 406806) (READ.AND.SAVE.NEW.FILLING 406808 . 407406) (
+SK.FILLING.LABEL 407408 . 407798)) (408184 444437 (SK.GETGLOBALPOSITION 408194 . 408499) (
+SKETCH.TRACK.ELEMENTS 408501 . 412021) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 412023 . 412582) (
+MAP.SKETCH.ELEMENTS.INTO.VIEWER 412584 . 412976) (MAP.GLOBAL.POSITION.INTO.VIEWER 412978 . 413358) (
+SKETCH.TO.VIEWER.POSITION 413360 . 413719) (SKETCH.TRACK.IMAGE 413721 . 414575) (SK.TRACK.IMAGE1 
+414577 . 415989) (MAP.VIEWER.XY.INTO.GLOBAL 415991 . 416985) (SK.SET.POSITION 416987 . 417323) (
+MAP.VIEWER.PT.INTO.GLOBAL 417325 . 418431) (VIEWER.TO.SKETCH.POSITION 418433 . 419068) (
+SK.INSURE.SCALE 419070 . 419330) (SKETCH.TO.VIEWER.REGION 419332 . 420138) (VIEWER.TO.SKETCH.REGION 
+420140 . 420478) (SK.READ.POINT.WITH.FEEDBACK 420480 . 431483) (SKETCH.GET.POSITION 431485 . 433365) (
+\CLOBBER.POSITION 433367 . 433815) (NEAREST.HOT.SPOT 433817 . 435345) (GETWREGION 435347 . 436108) (
+GET.BITMAP.POSITION 436110 . 436894) (SK.TRACK.BITMAP1 436896 . 444435)) (445006 475892 (
+SK.BRING.UP.POSITION.PAD 445016 . 450876) (SK.PAD.READER.POSITION 450878 . 452527) (
+SK.POSITION.READER.REPAINTFN 452529 . 454313) (SK.POSITION.PAD.FROM.VIEWER 454315 . 455657) (
+SK.INIT.POSITION.NUMBER.PAD.MENU 455659 . 456009) (SK.READ.POSITION.PAD.HANDLER 456011 . 461743) (
+DISPLAY.POSITION.READER.TOTAL 461745 . 464043) (POSITION.PAD.READER.HANDLER 464045 . 472088) (
+POSITIONPAD.HELDFN 472090 . 473574) (\POSITION.PAD.ADD.DIGIT.MENU 473576 . 475155) (
+\POSITION.READER.NUMBERPAD 475157 . 475890)) (477518 480196 (SK.DRAWFN 477528 . 477894) (
+SK.TRANSFORMFN 477896 . 478277) (SK.EXPANDFN 478279 . 478556) (SK.INPUT 478558 . 478939) (SK.INSIDEFN 
+478941 . 479581) (SK.UPDATEFN 479583 . 480194)) (485961 489906 (SK.CHECK.SKETCH.VERSION 485971 . 
+487211) (SK.INSURE.RECORD.LENGTH 487213 . 488696) (SK.INSURE.HAS.LENGTH 488698 . 489436) (
+SK.RECORD.LENGTH 489438 . 489612) (SK.SET.RECORD.LENGTHS 489614 . 489904)) (490651 491538 (
+SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 490661 . 491536)))))
 STOP
diff --git a/library/sketch/SKETCH-EDIT b/library/sketch/SKETCH-EDIT
index fe712eea..24279696 100644
--- a/library/sketch/SKETCH-EDIT
+++ b/library/sketch/SKETCH-EDIT
@@ -1,12 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED " 5-Dec-2023 00:12:04" {WMEDLEY}<library>sketch>SKETCH-EDIT.;1 108598 
+(FILECREATED " 5-Nov-2025 23:56:42" {WMEDLEY}<library>sketch>SKETCH-EDIT.;2 108507 
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (RECORDS TEXTELTSELECTION)
+      :CHANGES-TO (FNS SKED.MOVE.SELECTION)
 
-      :PREVIOUS-DATE "21-Aug-2021 20:50:04" {WMEDLEY}<library>sketch>SKETCHEDIT.;1)
+      :PREVIOUS-DATE " 5-Dec-2023 00:12:04" {WMEDLEY}<library>sketch>SKETCH-EDIT.;1)
 
 
 (PRETTYCOMPRINT SKETCH-EDITCOMS)
@@ -520,11 +520,10 @@
                         (SKED.MOVE.SELECTION SKW (NOT (WINDOWPROP SKW 'USEGRID])
 
 (SKED.MOVE.SELECTION
-  [LAMBDA (SKW USEGRID)                                      (* rrb "11-Jul-86 15:51")
-          
-          (* the user has left buttoned in a sketch window.
-          Put the caret there.)
-
+  [LAMBDA (SKW USEGRID)                                      (* ; "Edited  5-Nov-2025 23:56 by rmk")
+                                                             (* rrb "11-Jul-86 15:51")
+                                                             (* ; 
+                               "the user has left buttoned in a sketch window.  Put the caret there.")
     (SKED.CLEAR.SELECTION SKW)
     (PROG (FEEDBACKX FEEDBACKY OLDGRIDX OLDGRIDY OLDX OLDY OLDCUR FEEDBACKCUR INTEXT INIMAGEOBJ 
                  STARTLINE STARTCHAR X Y (DSP (WINDOWPROP SKW 'DSP))
@@ -532,44 +531,36 @@
                  (GRID (SK.GRIDFACTOR SKW)))
           (until (MOUSESTATE UP)
              do 
-          
-          (* track with the appropriate caret depending upon whether the cursor is inside 
-          of existing text or not.)
+                (* ;; "track with the appropriate caret depending upon whether the cursor is inside of existing text or not.")
 
                 (SETQ X (LASTMOUSEX DSP))
                 (SETQ Y (LASTMOUSEY DSP))
                 (COND
                    ((OR (NEQ OLDX X)
-                        (NEQ OLDY Y))
-          
-          (* only look for things when the cursor position has changed.)
-
+                        (NEQ OLDY Y))                        (* ; 
+                                         "only look for things when the cursor position has changed.")
                     (SETQ OLDX X)
                     (SETQ OLDY Y)
                     [COND
                        ([AND (SETQ INTEXT
                               (for ELT in (LOCALSPECS.FROM.VIEWER SKW)
+                                 unless (EQ 'SHADE (fetch (LOCALTEXT LOCALFONT)
+                                                      of (fetch (SCREENELT LOCALPART) of ELT)))
                                  when (SELECTQ (fetch (SCREENELT GTYPE) of ELT)
-                                          (TEXT (AND (NEQ (fetch (LOCALTEXT LOCALFONT)
-                                                             of (fetch (SCREENELT LOCALPART)
-                                                                   of ELT))
-                                                          'SHADE)
-                                                     (SETQ STARTLINE (INTEXT ELT X Y))))
-                                          (TEXTBOX (AND (NEQ (fetch (LOCALTEXTBOX LOCALFONT)
-                                                                of (fetch (SCREENELT LOCALPART)
-                                                                      of ELT))
-                                                             'SHADE)
-                                                        (INSIDE? (fetch (LOCALTEXTBOX 
-                                                                               LOCALTEXTBOXREGION)
-                                                                    of (fetch (SCREENELT LOCALPART)
-                                                                          of ELT))
-                                                               X Y)
-                                                        (SETQ STARTLINE (CLOSEST.LINE ELT Y))))
+                                          (TEXT (SETQ STARTLINE (INTEXT ELT X Y)))
+                                          (TEXTBOX (CL:WHEN (INSIDE? (fetch (LOCALTEXTBOX 
+                                                                                   LOCALTEXTBOXREGION
+                                                                                   )
+                                                                        of (fetch (SCREENELT 
+                                                                                         LOCALPART)
+                                                                              of ELT))
+                                                                   X Y)
+                                                       (SETQ STARTLINE (CLOSEST.LINE ELT Y))))
                                           NIL) do (RETURN ELT)))
                              (NOT (SK.ELEMENT.PROTECTED? (fetch (SCREENELT GLOBALPART) of INTEXT)
-                                         'CHANGE]            (* inside of a text element.)
+                                         'CHANGE]            (* ; "inside of a text element.")
                         (SETQ FEEDBACKCUR IN.TEXT.FEEDBACK.CURSOR)
-                        (SETQ FEEDBACKX (CHAR.BEGIN (SETQ STARTCHAR (CLOSEST.CHAR X STARTLINE INTEXT 
+                        (SETQ FEEDBACKX (CHAR.BEGIN (SETQ STARTCHAR (CLOSEST.CHAR X STARTLINE INTEXT
                                                                            DSP))
                                                STARTLINE INTEXT DSP))
                         (SETQ FEEDBACKY (LINE.BEGIN STARTLINE INTEXT)))
@@ -577,7 +568,7 @@
                           (COND
                              (USEGRID (SETQ FEEDBACKX (MAP.WINDOW.ONTO.GRID X SCALE GRID))
                                     (SETQ FEEDBACKY (MAP.WINDOW.ONTO.GRID Y SCALE GRID)))
-                             (T                              (* no grid)
+                             (T                              (* ; "no grid")
                                 (SETQ FEEDBACKX X)
                                 (SETQ FEEDBACKY Y]
                     (COND
@@ -588,13 +579,13 @@
                         (SHOW.FEEDBACK (SETQ OLDCUR FEEDBACKCUR)
                                (SETQ OLDGRIDX FEEDBACKX)
                                (SETQ OLDGRIDY FEEDBACKY)
-                               SKW)))                        (* give the coordinate display window 
-                                                             a shot.)
+                               SKW)))                        (* ; 
+                                                         "give the coordinate display window a shot.")
                     (SKETCHW.UPDATE.LOCATORS SKW)))
              finally (AND OLDGRIDX (SHOW.FEEDBACK OLDCUR OLDGRIDX OLDGRIDY SKW))
                    (COND
-                      ((EQ OLDCUR IN.TEXT.FEEDBACK.CURSOR)   (* selection is existing text)
-                       (SKED.SET.SELECTION (CREATE.TEXT.SELECTION INTEXT STARTLINE STARTCHAR OLDGRIDX 
+                      ((EQ OLDCUR IN.TEXT.FEEDBACK.CURSOR)   (* ; "selection is existing text")
+                       (SKED.SET.SELECTION (CREATE.TEXT.SELECTION INTEXT STARTLINE STARTCHAR OLDGRIDX
                                                   OLDGRIDY DSP)
                               SKW))
                       (OLDGRIDX (SKED.SET.SELECTION (create POSITION
@@ -1953,7 +1944,7 @@
            YCOORD _ (LASTMOUSEY WIN])
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (2425 39533 (BUTLAST 2435 . 2783) (CHAR.BEGIN 2785 . 4710) (CLOSEST.CHAR 4712 . 8935) (
+  (FILEMAP (NIL (2425 39442 (BUTLAST 2435 . 2783) (CHAR.BEGIN 2785 . 4710) (CLOSEST.CHAR 4712 . 8935) (
 CLOSEST.LINE 8937 . 9499) (FLASHW 9501 . 9658) (HILITE.LINE 9660 . 10479) (HILITE.TEXT 10481 . 12129) 
 (IN.TEXT.EXTEND 12131 . 15404) (INIMAGEOBJ 15406 . 15911) (INTEXT 15913 . 16410) (NEW.TEXT.EXTEND 
 16412 . 18631) (NEW.TEXT.SELECTIONP 18633 . 18813) (NTHCHARWIDTH 18815 . 19072) (NTHLOCALREGION 19074
@@ -1961,18 +1952,18 @@ CLOSEST.LINE 8937 . 9499) (FLASHW 9501 . 9658) (HILITE.LINE 9660 . 10479) (HILIT
  . 21138) (SHOW.FEEDBACK.BOX 21140 . 22194) (SELECTION.POSITION 22196 . 22988) (SKED.CLEAR.SELECTION 
 22990 . 23513) (SKETCH.CLEANUP 23515 . 25429) (SK.ENTER.EDIT.CHANGE 25431 . 26976) (
 SKED.REMOVE.OTHER.SELECTIONS 26978 . 27405) (SKED.EXTEND.SELECTION 27407 . 28872) (SKED.MOVE.SELECTION
- 28874 . 34035) (CREATE.TEXT.SELECTION 34037 . 34553) (SKED.SELECTION.FEEDBACK 34555 . 36211) (
-SKED.SET.EXTENDSELECTION 36213 . 36530) (SKED.SET.SELECTION 36532 . 36932) (LINE.BEGIN 36934 . 37488) 
-(SELECTION.GREATERP 37490 . 38285) (SK.WORD.BREAK.CLASS 38287 . 39127) (SK.GETSYNTAX 39129 . 39531)) (
-40375 86109 (WB.EDITOR 40385 . 41710) (SK.TTYENTRYFN 41712 . 41990) (SK.TTYEXITFN 41992 . 42261) (
-SKED.INSERT 42263 . 42691) (\SKED.INSERT 42693 . 63815) (FIRST.N.ELEMENTS 63817 . 64084) (
-SKED.CREATE.NEW.TEXTBOX 64086 . 70615) (SKED.CHARACTERPOSITION 70617 . 71404) (SKED.LINE.AND.CHAR# 
-71406 . 73037) (\SKED.DELETE.WORD.FROM.STRING 73039 . 74078) (\SKED.INSERT.CHARS.TO.STR 74080 . 82491)
- (JOINCHARS 82493 . 82880) (STRINGFROMCHARACTERS 82882 . 83207) (GETALLCHARS 83209 . 83550) (
-CLEANUP.EDIT 83552 . 84004) (SKED.NEW.TEXTELT 84006 . 86107)) (86144 107152 (
-MAP.SCREEN.POSITION.ONTO.GRID 86154 . 87603) (NEAREST.ON.GRID 87605 . 88149) (SK.MIDDLE.TITLEFN 88151
- . 90094) (WB.BUTTON.HANDLER 90096 . 97918) (WB.ADD.NEW.POINT 97920 . 101249) (WB.DRAWLINE 101251 . 
-105485) (WB.RUBBERBAND.POSITION 105487 . 106404) (SK.RUBBERBAND.FEEDBACKFN 106406 . 106910) (
-RESET.LINE.BEING.INPUT 106912 . 107150)) (107334 108575 (NEAREST.EXISTING.POSITION 107344 . 107546) (
-WB.NEARPT 107548 . 108433) (LASTMOUSEPOSITION 108435 . 108573)))))
+ 28874 . 33944) (CREATE.TEXT.SELECTION 33946 . 34462) (SKED.SELECTION.FEEDBACK 34464 . 36120) (
+SKED.SET.EXTENDSELECTION 36122 . 36439) (SKED.SET.SELECTION 36441 . 36841) (LINE.BEGIN 36843 . 37397) 
+(SELECTION.GREATERP 37399 . 38194) (SK.WORD.BREAK.CLASS 38196 . 39036) (SK.GETSYNTAX 39038 . 39440)) (
+40284 86018 (WB.EDITOR 40294 . 41619) (SK.TTYENTRYFN 41621 . 41899) (SK.TTYEXITFN 41901 . 42170) (
+SKED.INSERT 42172 . 42600) (\SKED.INSERT 42602 . 63724) (FIRST.N.ELEMENTS 63726 . 63993) (
+SKED.CREATE.NEW.TEXTBOX 63995 . 70524) (SKED.CHARACTERPOSITION 70526 . 71313) (SKED.LINE.AND.CHAR# 
+71315 . 72946) (\SKED.DELETE.WORD.FROM.STRING 72948 . 73987) (\SKED.INSERT.CHARS.TO.STR 73989 . 82400)
+ (JOINCHARS 82402 . 82789) (STRINGFROMCHARACTERS 82791 . 83116) (GETALLCHARS 83118 . 83459) (
+CLEANUP.EDIT 83461 . 83913) (SKED.NEW.TEXTELT 83915 . 86016)) (86053 107061 (
+MAP.SCREEN.POSITION.ONTO.GRID 86063 . 87512) (NEAREST.ON.GRID 87514 . 88058) (SK.MIDDLE.TITLEFN 88060
+ . 90003) (WB.BUTTON.HANDLER 90005 . 97827) (WB.ADD.NEW.POINT 97829 . 101158) (WB.DRAWLINE 101160 . 
+105394) (WB.RUBBERBAND.POSITION 105396 . 106313) (SK.RUBBERBAND.FEEDBACKFN 106315 . 106819) (
+RESET.LINE.BEING.INPUT 106821 . 107059)) (107243 108484 (NEAREST.EXISTING.POSITION 107253 . 107455) (
+WB.NEARPT 107457 . 108342) (LASTMOUSEPOSITION 108344 . 108482)))))
 STOP
diff --git a/library/sketch/SKETCH-EDIT.LCOM b/library/sketch/SKETCH-EDIT.LCOM
index 91cd662b..bb772bdb 100644
Binary files a/library/sketch/SKETCH-EDIT.LCOM and b/library/sketch/SKETCH-EDIT.LCOM differ
diff --git a/library/sketch/SKETCH-ELEMENTS b/library/sketch/SKETCH-ELEMENTS
index ca3acf54..18c122b6 100644
--- a/library/sketch/SKETCH-ELEMENTS
+++ b/library/sketch/SKETCH-ELEMENTS
@@ -1,14 +1,14 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED " 5-Dec-2023 00:16:52" {WMEDLEY}<library>sketch>SKETCH-ELEMENTS.;1 554138 
+(FILECREATED " 6-Nov-2025 17:40:48" {WMEDLEY}<library>SKETCH>SKETCH-ELEMENTS.;16 546518 
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (RECORDS LOCALCIRCLE CIRCLE LOCALELLIPSE ELLIPSE KNOTELT LOCALCURVE OPENCURVE 
-                         CLOSEDCURVE LOCALCLOSEDCURVE LOCALCLOSEDWIRE LOCALWIRE WIRE CLOSEDWIRE TEXT
-                         LOCALTEXT LOCALTEXTBOX TEXTBOX BOX LOCALBOX ARC LOCALARC)
+      :CHANGES-TO (FNS SK.DECREASING.FONT.LIST SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.READFONTSIZE 
+                       SK.COLLECT.FONT.SIZES SK.READFONTFAMILY SK.SET.FONT SK.GUESS.FONTSAVAILABLE)
+                  (VARS SKETCH-ELEMENTSCOMS)
 
-      :PREVIOUS-DATE " 4-Aug-2022 09:57:43" {WMEDLEY}<library>sketch>SKETCHELEMENTS.;2)
+      :PREVIOUS-DATE " 5-Dec-2023 00:16:52" {WMEDLEY}<library>sketch>SKETCH-ELEMENTS.;1)
 
 
 (PRETTYCOMPRINT SKETCH-ELEMENTSCOMS)
@@ -123,8 +123,7 @@
                    SK.TEXT.FROM.TEXTBOX TEXT.SET.GLOBAL.REGIONS TEXT.REGIONFN TEXT.GLOBALREGIONFN 
                    TEXT.TRANSLATEFN TEXT.TRANSFORMFN TEXT.TRANSLATEPTSFN TEXT.UPDATEFN SK.CHANGE.TEXT
                    TEXT.SET.SCALES BREAK.AT.CARRIAGE.RETURNS)
-              (FNS ADD.KNOWN.SKETCH.FONT SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.NEXTSIZEFONT 
-                   SK.DECREASING.FONT.LIST SK.GUESS.FONTSAVAILABLE)
+              (FNS SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.NEXTSIZEFONT SK.DECREASING.FONT.LIST)
               (INITVARS (\KNOWN.SKETCH.FONTSIZES))
               (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)
               (DECLARE%: DONTCOPY (RECORDS TEXT LOCALTEXT))
@@ -136,7 +135,6 @@
               (VARS INDICATE.TEXT.SHADE)
               [INITVARS (SK.DEFAULT.FONT)
                      (SK.DEFAULT.TEXT.ALIGNMENT '(CENTER BASELINE]
-              (INITVARS \FONTSONFILE)
               (ADDVARS (SK.HORIZONTAL.STYLES LEFT RIGHT CENTER)
                      (SK.VERTICAL.STYLES TOP CENTER BASELINE BOTTOM))
               (VARS (SKETCH.TERMTABLE (CREATE.SKETCH.TERMTABLE)))
@@ -4635,26 +4633,33 @@ Click outside the window to stop.")
         NIL])
 
 (SK.READFONTFAMILY
-  [LAMBDA (SKW TITLE)                                        (* rrb "21-Nov-85 11:28")
-                                                             (* reads a font family name.)
-    (PROG ([KNOWNFAMILIES (UNION (for X in \FONTSONFILE collect (CAR X))
-                                 (for X in \FONTSINCORE collect (CAR X]
-           FAMILY)                                           (* offers a menu of possible choices.)
-          (COND
-             ((AND KNOWNFAMILIES (NEQ (SETQ FAMILY (\CURSOR.IN.MIDDLE.MENU
-                                                    (create MENU
-                                                           ITEMS _
-                                                           (APPEND '(("other" 'OTHER 
+  [LAMBDA (SKW TITLE)                                        (* ; "Edited  4-Nov-2025 15:08 by rmk")
+                                                             (* rrb "21-Nov-85 11:28")
+
+    (* ;; "Offers a menu of existing DISPLAY font families, with Other has a way for the user to type one in.  Other makes sense only if there are file fonts that are not yet known to Sketch.")
+
+    (* ;; "RMK: Sketch used to keep its own family-by-device cache, separate from \FONTSINCORE.  But the way it was set up, those fonts were created in core when they were identified, so FONTSAVAILABLE would find them them on \FONTSINCORE.  Here we scan all devices, not just display, to catch whatever might have shown up for a nondisplay device.  So this simulates that behavior.")
+
+    (* ;; "But for a user interaction like this, isn't it only DISPLAY families that matter, the descending-font lists for other devices are not relevant.  So maybe we really want only DISPLAY here.")
+
+    (LET (KNOWNFAMILIES FAMILY)
+         (for FS in (FONTSAVAILABLE '* '* NIL NIL '*) do (pushnew KNOWNFAMILIES (fetch (FONTSPEC
+                                                                                        FSFAMILY)
+                                                                                   of FS)))
+         (if (AND KNOWNFAMILIES (NEQ (SETQ FAMILY (\CURSOR.IN.MIDDLE.MENU
+                                                   (create MENU
+                                                          ITEMS _ [APPEND
+                                                                   (SORT KNOWNFAMILIES)
+                                                                   '(("other" 'OTHER 
                                                               "prompts for a family not on the menu."
-                                                                            )) KNOWNFAMILIES)
-                                                           TITLE _ (OR TITLE "Choose font")
-                                                           CENTERFLG _ T)))
-                                      'OTHER))
-              (RETURN FAMILY))
-             (T                                              (* grab the tty.)
-                (TTY.PROCESS (THIS.PROCESS))
-                (RETURN (CAR (ERSETQ (MKATOM (U-CASE (PROMPTFORWORD "New family: " NIL NIL
-                                                            (GETPROMPTWINDOW SKW])
+                                                                            ]
+                                                          TITLE _ (OR TITLE "Choose font")
+                                                          CENTERFLG _ T)))
+                                     'OTHER))
+             then FAMILY
+           else (CAR (ERSETQ (MKATOM (U-CASE (TTYINPROMPTFORWORD "New family: " NIL NIL (
+                                                                                      GETPROMPTWINDOW
+                                                                                         SKW])
 
 (CLOSE.PROMPT.WINDOW
   [LAMBDA (WINDOW)                                           (* rrb "28-Oct-84 14:14")
@@ -5418,166 +5423,126 @@ Click outside the window to stop.")
 )
 (DEFINEQ
 
-(ADD.KNOWN.SKETCH.FONT
-  [LAMBDA (FAMILY WID DEVICE FONT)                           (* ; "Edited 10-May-93 16:49 by rmk:")
-                                                             (* ; "Edited 21-Feb-89 15:06 by snow")
-
-    (* ;; "add to the globally cached font list")
-
-    (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES))
-    [LET ((CACHE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES))
-          (CACHED))
-         (COND
-            [(NULL CACHE)
-             (if \KNOWN.SKETCH.FONTSIZES
-                 then [NCONC1 \KNOWN.SKETCH.FONTSIZES (LIST FAMILY (LIST DEVICE (CONS WID FONT]
-               else (SETQ \KNOWN.SKETCH.FONTSIZES (LIST (LIST FAMILY (LIST DEVICE
-                                                                               (CONS WID FONT]
-            (T (COND
-                  ((SETQ CACHED (ASSOC DEVICE CACHE))
-                   (NCONC1 CACHED (CONS WID FONT)))
-                  (T (NCONC1 CACHE (CONS DEVICE (CONS WID FONT]
-    FONT])
-
 (SK.PICK.FONT
-  [LAMBDA (WID STRING DEVICE DISPLAYGFONT)                   (* ; "Edited 10-May-93 17:11 by rmk:")
-                                                             (* ; "Edited 22-Feb-89 07:53 by snow")
+  [LAMBDA (WID STRING DEVICE DISPLAYFONT)                    (* ; "Edited  6-Nov-2025 10:41 by rmk")
+                                                             (* ; "Edited  1-Sep-2025 13:02 by rmk")
+                                                             (* ; "Edited 10-May-93 17:11 by rmk:")
+                                                             (* ; "Edited 22-Feb-89 07:53 by snow")
 
-    (* ;; "returns the font in FAMILY that text should be printed in to have the text STRING fit into a region WID points wide")
+    (* ;; "RMK 2025:  This is weird, and I'm not sure that the original ever worked.  It is called from only one place (SK.CHOOSE.TEXT.FONT), with one constant STRING.  I believe it is trying to associate with DISPLAYFONT's family a corresponding DEVICE font for which the width of that string would be closest to WID without being larger than that.  It caches that font for WID, since that really is just a constant.")
+
+    (* ;; "Returns the font in DISPLAYFONT's  family that text should be printed in to have the text STRING fit into a region WID points wide.  The value can also be the atom SHADE, if there is no font small enough for STRING.")
 
     (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES))
-    (LET
-     [STARTFONT FONTWIDTH SCALE CACHEDFONT SIZE (FAMILY (FONTPROP DISPLAYGFONT 'FAMILY]
-     (IF [SETQ CACHEDFONT (ASSOC WID (ASSOC DEVICE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES]
-         THEN (CDR CACHEDFONT)
-       ELSE (SETQ STARTFONT (FONTCOPY DISPLAYGFONT 'DEVICE DEVICE))
-             NIL
-             (SETQ SCALE (FONTPROP STARTFONT 'SCALE))
-             (SETQ SIZE (FONTPROP STARTFONT 'SIZE))
-             [SETQ FONTWIDTH (COND
-                                (SCALE 
-                                       (* ;; "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.")
+    (LET ((FAMILY (FONTPROP DISPLAYFONT 'FAMILY))
+          STARTFONT FONTWIDTH SCALE CACHEDFONT AVAIL TOOSMALL)
+         (if (SGETMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID (FONTPROP DISPLAYFONT 'FACE))
+           else (SETQ STARTFONT (FONTCOPY DISPLAYFONT 'DEVICE DEVICE))
+                (SETQ SCALE (FONTPROP STARTFONT 'SCALE))
+                (SETQ FONTWIDTH (STRINGWIDTH STRING STARTFONT))
+                (CL:IF SCALE
+                    (SETQ FONTWIDTH (FIXR (QUOTIENT FONTWIDTH SCALE))))
+                (if (IEQP FONTWIDTH WID)
+                    then (PUTMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID STARTFONT)
+                  else 
+                       (* ;; "FONTSAVAILABLE sorts in increasing size order, so our first guess is either after or before the position of STARTFONT in the list.  This assumes that the widths are proportional to font sizes.")
 
-                                       (FIXR (QUOTIENT (STRINGWIDTH STRING STARTFONT)
-                                                    SCALE)))
-                                (T (STRINGWIDTH STRING STARTFONT]
-             [SETQ CACHEDFONT
-              (IF (IGREATERP FONTWIDTH WID)
-                  THEN 
+                       (SETQ TOOSMALL (ILESSP FONTWIDTH WID))
+                       (SETQ AVAIL (FONTSAVAILABLE (create FONTSPEC using (FONTPROP STARTFONT
+                                                                                 'SPEC)
+                                                                          FSSIZE _ '*)
+                                          NIL NIL NIL NIL T)) 
 
-                        (* ;; "Font width was too big, try smaller fonts in decreasing size.")
+                       (* ;; 
+  "If STARTFONT width is too big, try smaller fonts, otherwise bigger ones.  CDR skips the STARTFONT")
 
-                        [FOR FONT IN [CDR (FIND F
-                                                     ON [SORT (FONTSAVAILABLE FAMILY '*
-                                                                         'MRR 0 DEVICE T)
-                                                                  (FUNCTION (LAMBDA (F1 F2)
-                                                                              (IGREATERP (CADR F1)
-                                                                                     (CADR F2]
-                                                     SUCHTHAT (EQ SIZE (CADR F]
-                           WHEN (ILESSP [SETQ FONTWIDTH (COND
-                                                               (SCALE 
-                                                                      (* ;; 
-                                                   "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.")
+                       (for FS FONT (PREVFONT _ STARTFONT)
+                            (PREVWIDTH _ FONTWIDTH) in [CDR (MEMBER (FONTPROP STARTFONT 'SPEC)
+                                                                   (CL:IF TOOSMALL
+                                                                       AVAIL
+                                                                       (REVERSE AVAIL))]
+                          eachtime (SETQ FONT (FONTCREATE FS))
+                                (SETQ FONTWIDTH (STRINGWIDTH STRING FONT))
+                                (CL:IF SCALE
+                                    (SETQ FONTWIDTH (FIXR (QUOTIENT FONTWIDTH SCALE))))
+                          until (CL:IF TOOSMALL
+                                    (IGREATERP FONTWIDTH WID)
+                                    (ILESSP FONTWIDTH WID)) do (SETQ PREVFONT FONT)
+                                                               (SETQ PREVWIDTH FONTWIDTH)
+                          finally 
 
-                                                                      (FIXR (QUOTIENT (STRINGWIDTH
-                                                                                       STRING FONT)
-                                                                                   SCALE)))
-                                                               (T (STRINGWIDTH STRING FONT]
-                                           WID) DO (RETURN (ADD.KNOWN.SKETCH.FONT FAMILY WID
-                                                                      DEVICE FONT))
-                           FINALLY (RETURN (ADD.KNOWN.SKETCH.FONT
-                                                FAMILY WID DEVICE
-                                                (IF (GREATERP FONTWIDTH (TIMES 1.5 WID))
-                                                    THEN 'SHADE
-                                                  ELSEIF (OR FONT STARTFONT]
-                ELSEIF (IEQP FONTWIDTH WID)
-                  THEN (ADD.KNOWN.SKETCH.FONT FAMILY WID DEVICE STARTFONT)
-                ELSE 
+                                (* ;; "We ran over, return the previous")
 
-                      (* ;; "FONT width was too small, try bigger fonts.")
-
-                      (FOR FONT PREVFONT
-                         IN [CDR (FIND F ON [SORT (FONTSAVAILABLE FAMILY '* 'MRR 0 DEVICE
-                                                                     T)
-                                                              (FUNCTION (LAMBDA (F1 F2)
-                                                                          (ILESSP (CADR F1)
-                                                                                 (CADR F2]
-                                        SUCHTHAT (EQ SIZE (CADR F]
-                         DO (IF (IGREATERP (COND
-                                                      (SCALE 
-                                                             (* ;; 
-                                                   "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.")
-
-                                                             (FIXR (QUOTIENT (STRINGWIDTH STRING FONT
-                                                                                    )
-                                                                          SCALE)))
-                                                      (T (STRINGWIDTH STRING FONT)))
-                                               WID)
-                                    THEN (RETURN (ADD.KNOWN.SKETCH.FONT FAMILY WID DEVICE 
-                                                            PREVFONT)))
-                               (SETQ PREVFONT FONT) FINALLY (RETURN (ADD.KNOWN.SKETCH.FONT
-                                                                         FAMILY WID DEVICE
-                                                                         (OR FONT PREVFONT STARTFONT]
-             (IF (FONTP CACHEDFONT)
-                 THEN                                    (* ; "Could be SHADE")
-                       (FONTCOPY CACHEDFONT 'FACE (FONTPROP DISPLAYGFONT 'FACE))
-               ELSE CACHEDFONT])
+                                (CL:UNLESS TOOSMALL
+                                    (CL:WHEN (GREATERP PREVWIDTH (TIMES 1.5 WID))
+                                                             (* ; "If we get too small, return SHADE")
+                                        (SETQ PREVFONT 'SHADE)))
+                                (SPUTMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID
+                                       (FONTPROP DISPLAYFONT 'FACE)
+                                       PREVFONT)
+                                (RETURN PREVFONT])
 
 (SK.CHOOSE.TEXT.FONT
-  [LAMBDA (GTEXT SCALE VIEWER)                               (* ; "Edited 10-May-93 16:18 by rmk:")
-                                                             (* ; "Edited  1-Nov-91 16:56 by jds")
+  [LAMBDA (GTEXT SCALE VIEWER)                               (* ; "Edited  6-Nov-2025 00:08 by rmk")
+                                                             (* ; "Edited 10-May-93 16:18 by rmk:")
+                                                             (* ; "Edited  1-Nov-91 16:56 by jds")
 
-    (* ;; "returns the font that text in the individual global part of a text or textbox element GTEXT should be displayed in when shown in VIEWER.")
+    (* ;; "returns the font that text in the individual global part of a text or textbox element GTEXT should be displayed in when shown in VIEWER.")
 
     (PROG ([VIEWERFONTCACHE (OR (AND (WINDOWP VIEWER)
                                      (WINDOWPROP VIEWER 'PICKFONTCACHE))
                                 (AND (STREAMP VIEWER)
                                      (STREAMPROP VIEWER 'PICKFONTCACHE]
            (GFONT (fetch (TEXT FONT) of GTEXT))
-           LOCALFONT)
+           (CANONICALTESTSTR "AWIaiw")
+           LOCALFONT CANONICALWIDTH DEVICE DISPLAYGFONT)
+          (CL:WHEN (SETQ LOCALFONT (SASSOC GFONT VIEWERFONTCACHE))
+                                                             (* ; "look in the viewer's font cache.")
+              (RETURN (CDR LOCALFONT)))
+          [SETQ DEVICE (COND
+                          ((STREAMP VIEWER)
+                           (fetch (IMAGEOPS IMAGETYPE) of (fetch (STREAM IMAGEOPS) of VIEWER)))
+                          (T 'DISPLAY]
           [COND
-             ((SETQ LOCALFONT (SASSOC GFONT VIEWERFONTCACHE))(* ; 
-                                                           "look in the viewer's font cache.")
-              (RETURN (CDR LOCALFONT]
-          (RETURN (PROG ((CANONICALTESTSTR "AWIaiw")
-                         CANONICALWIDTH DEVICE DISPLAYGFONT)
-                        [SETQ DEVICE (COND
-                                        ((STREAMP VIEWER)
-                                         (fetch (IMAGEOPS IMFONTCREATE)
-                                            of (fetch (STREAM IMAGEOPS) of VIEWER)))
-                                        (T 'DISPLAY]
-                        [COND
-                           ((EQUAL (TIMES SCALE (DSPSCALE NIL VIEWER))
-                                   (fetch (TEXT INITIALSCALE) of GTEXT))
+             ((EQUAL (TIMES SCALE (DSPSCALE NIL VIEWER))
+                     (fetch (TEXT INITIALSCALE) of GTEXT))
 
-                            (* ;; "special case scales being the same so there is not a large delay when first character is typed and to avoid font look up problems when hardcopying at scale 1")
+              (* ;; "special case scales being the same so there is not a large delay when first character is typed and to avoid font look up problems when hardcopying at scale 1")
 
-                            (SETQ LOCALFONT (FONTCREATE GFONT NIL NIL NIL DEVICE)))
-                           (T 
-                              (* ;; "use a canonical string to determine the font size so that all strings of a given font at a given scale look the same.  If font is determined by the width of the particular string, two different string will appear in different fonts.  In particular, the string may change fonts as the user is typing into it.")
+              (SETQ LOCALFONT (FONTCREATE GFONT NIL NIL NIL DEVICE)))
+             (T 
+                (* ;; "Use a canonical string to determine the font size so that all strings of a given font at a given scale look the same.  If font is determined by the width of the particular string, two different strings will appear in different fonts.  In particular, the string may change fonts as the user is typing into it.")
 
-                              (* ;; "don't use the face information when determining string width because in some cases HELVETICA 10, the bold is smaller than the regular.")
+                (* ;; "The canonical width here is the natural font width having somehow taken into account the scale of the viewer and the initialscale of the text.")
 
-                              (SETQ DISPLAYGFONT (FONTCREATE GFONT NIL NIL NIL 'DISPLAY))
-                              [SETQ CANONICALWIDTH
-                               (FIXR (QUOTIENT (TIMES [STRINGWIDTH CANONICALTESTSTR
-                                                             (LIST (FONTPROP DISPLAYGFONT
-                                                                          'FAMILY)
-                                                                   (FONTPROP DISPLAYGFONT
-                                                                          'SIZE]
-                                                      (fetch (TEXT INITIALSCALE) of GTEXT))
-                                            (TIMES SCALE (DSPSCALE NIL VIEWER]
-                                                             (* ; "calculate the local font.")
-                              (SETQ LOCALFONT (SK.PICK.FONT CANONICALWIDTH CANONICALTESTSTR 
-                                                     DEVICE DISPLAYGFONT]
-                        [COND
-                           ((WINDOWP VIEWER)
-                            (WINDOWPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT)
-                                                                    VIEWERFONTCACHE)))
-                           ((STREAMP VIEWER)
-                            (STREAMPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT)
-                                                                    VIEWERFONTCACHE]
-                        (RETURN LOCALFONT])
+                (SETQ DISPLAYGFONT (FONTCREATE GFONT NIL NIL NIL 'DISPLAY))
+                [SETQ CANONICALWIDTH
+                 (FIXR (QUOTIENT (TIMES (STRINGWIDTH CANONICALTESTSTR
+                                               (if NIL
+                                                   then (create FONTSPEC using (FONTPROP DISPLAYGFONT
+                                                                                      'SPEC)
+                                                                               FSFACE _
+                                                                               (MAKEFONTFACE
+                                                                                'MEDIUM
+                                                                                'REGULAR
+                                                                                'REGULAR))
+                                                 else 
+
+                                 (* ;; "Original code didn't use the face information when determining string width because, it said, that in some cases HELVETICA 10, the bold is smaller than the regular. ")
+
+                                                      DISPLAYGFONT))
+                                        (fetch (TEXT INITIALSCALE) of GTEXT))
+                              (TIMES SCALE (DSPSCALE NIL VIEWER]
+                                                             (* ; "calculate the local font.")
+                (SETQ LOCALFONT (SK.PICK.FONT CANONICALWIDTH CANONICALTESTSTR DEVICE DISPLAYGFONT]
+          [COND
+             ((WINDOWP VIEWER)
+              (WINDOWPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT)
+                                                      VIEWERFONTCACHE)))
+             ((STREAMP VIEWER)
+              (STREAMPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT)
+                                                      VIEWERFONTCACHE]
+          (RETURN LOCALFONT])
 
 (SK.NEXTSIZEFONT
   [LAMBDA (WHICHDIR NOWFONT)                                 (* rrb "14-Jul-86 13:43")
@@ -5603,136 +5568,40 @@ Click outside the window to stop.")
                            do (RETURN (SK.FONTNAMELIST FONT])
 
 (SK.DECREASING.FONT.LIST
-  [LAMBDA (FAMILY DEVICETYPE)                 (* ; 
-                                                "Edited 12-Oct-92 12:39 by sybalsky:mv:envos")
+  [LAMBDA (FAMILY DEVICE)                                    (* ; "Edited  6-Nov-2025 17:40 by rmk")
+                                                             (* ; "Edited  4-Nov-2025 15:34 by rmk")
+                                                             (* ; 
+                                                        "Edited 12-Oct-92 12:39 by sybalsky:mv:envos")
 
-    (* ;; "returns a list of fonts of family FAMILY which work on device DEVICETYPE")
+    (* ;; "This is used to find the best font for FAMILY on DEVICE that will allow a string to fit in a box, or to find the next larger/smaller font while editing.   ")
 
-    [COND
-       ((NULL FAMILY)
-        (SETQ FAMILY 'MODERN]
+    (* ;; "RMK 2025: The original code anticipated the coercions of the PRESS/INTERPRESS/POSTSCRIPT devices, building in e.g. that HELVETICA maps to MODERN on INTERPRESS and not even looking to see if there are any INTERPRESS HELVETICA fonts available or if e.g. INTERPRESS TERMINAL would coerce to MODERN for other sizes.  ")
 
-    (* ;; "convert to families that exist on the known devices.")
+    (* ;; "That is, if FAMILY is TERMINAL for INTERPRESS, this would only return fonts for sizes 6 8 10 12 even though coercions to MODERN might give smaller and bigger sizes.")
 
-(* ;;; "NOTE: this is a very bad way to convert the family.  It HARDCODES in the conversions for PRESS and INTERPRESS  and does nothing for new device types.  I have added the conversion for POSTSCRIPT that does things a little cleaner, but it should really look at a property of the device (fontconversions or some such animal.)  --was 2/19/89")
+    (* ;; "This code looks up all of the possible coercions of the given family to get all possible coerceable sizes, then relies on the related coercions in FONTCREATE to produce FAMILY fonts possibly constructed from data in the files for some other font.  E.g. TERMINAL 14 will have the data from MODERN 14.")
 
-    (LET ((CONVERSION))
-         [COND
-            [(EQ DEVICETYPE 'PRESS)
-             (COND
-                ((EQ FAMILY 'MODERN)
-                 (SETQ FAMILY 'HELVETICA))
-                ((EQ FAMILY 'CLASSIC)
-                 (SETQ FAMILY 'TIMESROMAN))
-                ((EQ FAMILY 'TERMINAL)
-                 (SETQ FAMILY 'GACHA]
-            [(EQ DEVICETYPE 'INTERPRESS)
-             (COND
-                ((EQ FAMILY 'HELVETICA)
-                 (SETQ FAMILY 'MODERN))
-                ((EQ FAMILY 'TIMESROMAN)
-                 (SETQ FAMILY 'CLASSIC))
-                ((EQ FAMILY 'GACHA)
-                 (SETQ FAMILY 'TERMINAL]
-            ((EQ DEVICETYPE 'POSTSCRIPT)
-             (if (SETQ CONVERSION (ASSOC FAMILY POSTSCRIPT.FONT.ALIST))
-                 then 
+    (* ;; "This is also device independent:  should work for HTML (whether or not HTML specifies any CHARCOERCIONS).")
 
-                       (* ;; 
-                  "convert the family here for postscript as well as the other well known devices.")
+    (* ;; "Note that FONTSAVAILABLE caches its file lookups and FONTCREATE caches its fonts.")
 
-                       (SETQ FAMILY (CDR CONVERSION]
-         (for FONT in (SK.GUESS.FONTSAVAILABLE FAMILY DEVICETYPE)
-            collect (FONTCOPY FONT 'DEVICE DEVICETYPE])
+    (CL:UNLESS FAMILY
+        (SETQ FAMILY 'MODERN))
+    (LET ((FAMSPEC (create FONTSPEC
+                          FSFAMILY _ FAMILY
+                          FSSIZE _ '*
+                          FSDEVICE _ DEVICE)))
 
-(SK.GUESS.FONTSAVAILABLE
-  [LAMBDA (FAMILY HDCPYTYPE)                                 (* rrb " 9-Oct-85 16:10")
-          
-          (* returns a list of all fonts of a FAMILY in decreasing order.)
+         (* ;; "Run through all sizes for all the fonts for FAMILY or any of its coercions on DEVICE.  This gives us all the possible sizes for FAMILY, we ask FONTCREATE to create a FAMILY font for each of those sizes.")
 
-    (PROG (FILEFONTS CACHE DISPLAYFONTSIZES)
-          (SETQ HDCPYTYPE (COND
-                             ((NULL HDCPYTYPE)
-                              (PRINTERTYPE))
-                             ((NLISTP HDCPYTYPE)
-                              HDCPYTYPE)
-                             (T HDCPYTYPE)))                 (* cache the file fonts.)
-          [COND
-             [[SETQ FILEFONTS (ASSOC HDCPYTYPE (CDR (ASSOC FAMILY \FONTSONFILE]
-          
-          (* note if a cache has been calculated. Use it even if it is NIL)
-          
-          (* \FONTSONFILE seems to group things such as CLASSICTHIN under CLASSIC so make 
-          sure to remove anything that has the wrong family.)
-
-              (SETQ FILEFONTS (SUBSET (CDR FILEFONTS)
-                                     (FUNCTION (LAMBDA (X)
-                                                 (EQ (CAR X)
-                                                     FAMILY]
-             (T (RESETFORM (CURSOR WAITINGCURSOR)
-                       (SETQ FILEFONTS (FONTSAVAILABLE FAMILY '* '(MEDIUM REGULAR REGULAR) NIL 
-                                              HDCPYTYPE T))
-          
-          (* Since there is no way to determine the real sizes for PRESS fonts with size 
-          of 0 {meaning the widths scale}, guess that they are available in 10)
-
-                       [COND
-                          [(EQ HDCPYTYPE 'PRESS)
-          
-          (* make sure to look for anything that has a display font.)
-
-                           (SETQ DISPLAYFONTSIZES (for FONT
-                                                     in (FONTSAVAILABLE FAMILY '*
-                                                               '(MEDIUM REGULAR REGULAR) NIL
-                                                               'DISPLAY) collect (CADR FONT)))
-                           (SETQ FILEFONTS
-                            (for FONT in FILEFONTS
-                               join (COND
-                                       [(EQ (CADR FONT)
-                                            0)
-                                        (for SIZE
-                                           in (UNION DISPLAYFONTSIZES
-                                                     '(36 30 24 18 14 12 10 8 6))
-                                           when (FONTCREATE (CAR FONT)
-                                                       SIZE NIL NIL 'DISPLAY T)
-                                           collect (CONS (CAR FONT)
-                                                         (CONS SIZE (CDDR FONT]
-                                       (T (CONS FONT]
-                          ((EQ HDCPYTYPE 'DISPLAY)
-          
-          (* patch around the bug in FONTSAVAILABLE.
-          Remove after J release.)
-
-                           (SETQ FILEFONTS (SUBSET FILEFONTS (FUNCTION (LAMBDA (FONT)
-                                                                         (EQUAL (CADDR FONT)
-                                                                                '(MEDIUM REGULAR 
-                                                                                        REGULAR]
-                                                             (* remove duplicates and sort)
-                       [SETQ FILEFONTS (SORT (INTERSECTION FILEFONTS FILEFONTS)
-                                             (FUNCTION (LAMBDA (A B)
-                                                         (GREATERP (CADR A)
-                                                                (CADR B]
-                       (COND
-                          ((NULL (SETQ CACHE (ASSOC FAMILY \FONTSONFILE)))
-                           (SETQ \FONTSONFILE (CONS (LIST FAMILY (CONS HDCPYTYPE FILEFONTS))
-                                                    \FONTSONFILE)))
-                          (T (NCONC1 CACHE (CONS HDCPYTYPE FILEFONTS]
-          
-          (* reget the fonts in core since they may have changed since last time.)
-
-          (RETURN (SORT (UNION (FONTSAVAILABLE FAMILY '* NIL NIL HDCPYTYPE)
-                               FILEFONTS)
-                        (FUNCTION (LAMBDA (A B)
-                                    (COND
-                                       ((EQ (CADR A)
-                                            (CADR B))
-          
-          (* in case both TIMESROMAN and TIMESROMAND for example make it in.)
-
-                                        (ALPHORDER (CADR A)
-                                               (CADR B)))
-                                       (T (GREATERP (CADR A)
-                                                 (CADR B])
+         (for FS SIZES in (for FS in [CONS FAMSPEC (COERCEFONTSPEC FAMSPEC (FONTDEVICEPROP
+                                                                            DEVICE
+                                                                            'CHARCOERCIONS]
+                             join (FONTSAVAILABLE FS NIL NIL NIL NIL T))
+            do (pushnew SIZES (fetch (FONTSPEC FSSIZE) of FS))
+            finally (RETURN (for S in [SORT SIZES (FUNCTION (LAMBDA (S1 S2)
+                                                              (IGREATERP S1 S2]
+                               collect (FONTCREATE FAMILY S NIL NIL DEVICE])
 )
 
 (RPAQ? \KNOWN.SKETCH.FONTSIZES )
@@ -5753,37 +5622,28 @@ Click outside the window to stop.")
 (DEFINEQ
 
 (SK.SET.FONT
-  [LAMBDA (W NEWFONT)                                        (* rrb " 2-Oct-85 14:55")
-          
-          (* sets the entire default font. Used when a sketch stream is created.
-          or any of the defaults are changed. NEWFONT is a list of
-          (FAMILY SIZE FACE))
+  [LAMBDA (W NEWFONT)                                        (* ; "Edited  4-Nov-2025 13:06 by rmk")
+                                                             (* rrb " 2-Oct-85 14:55")
 
-    (COND
-       (NEWFONT (COND
-                   ((FONTCREATE NEWFONT NIL NIL NIL NIL T)
-          
-          (* clear the cache of looked up fonts. This provides the user a way of clearing 
-          the cache that shouldn't happen too much and is documented.)
+    (* ;; "Sets the  default font.  Used when a sketch stream is created.  or any of the defaults are changed.  NEWFONT is a fontspec")
 
-                    (AND (FASSOC (CAR NEWFONT)
-                                \FONTSONFILE)
-                         (SETQ \FONTSONFILE (for BUCKET in \FONTSONFILE
-                                               when (NEQ (CAR BUCKET)
-                                                         (CAR NEWFONT)) collect BUCKET)))
-                    (replace (SKETCHCONTEXT SKETCHFONT) of (WINDOWPROP W 'SKETCHCONTEXT) with NEWFONT
-                           ))
-                   (T (STATUSPRINT W (CAR NEWFONT)
-                             " "
-                             (CADR NEWFONT)
-                             " "
-                             (SELECTQ (CAR (CADDR NEWFONT))
-                                 (BOLD 'BOLD)
-                                 "")
-                             (SELECTQ (CADR (CADDR NEWFONT))
-                                 (ITALIC 'ITALIC)
-                                 "")
-                             " not found"])
+    (CL:WHEN NEWFONT
+        (if (FONTCREATE NEWFONT NIL NIL NIL NIL T)
+            then 
+                 (* ;; "Tests to make sure the font exists, but stores the fontspec.")
+
+                 (replace (SKETCHCONTEXT SKETCHFONT) of (WINDOWPROP W 'SKETCHCONTEXT) with NEWFONT)
+          else (STATUSPRINT W (fetch (FONTSPEC FSFAMILY) of NEWFONT)
+                      " "
+                      (fetch (FONTSPEC FSSIZE) of NEWFONT)
+                      " "
+                      (SELECTQ (fetch (FONTFACE WEIGHT) of (fetch (FONTSPEC FSFACE) of NEWFONT))
+                          (BOLD 'BOLD)
+                          "")
+                      (SELECTQ (fetch (FONTFACE SLOPE) of (fetch (FONTSPEC FSFACE) of NEWFONT))
+                          (ITALIC 'ITALIC)
+                          "")
+                      " not found")))])
 
 (SK.SET.TEXT.FONT
   [LAMBDA (W)                                                (* rrb " 4-Oct-85 16:21")
@@ -5838,90 +5698,51 @@ Click outside the window to stop.")
                                                              of SKCONTEXT])
 
 (SK.READFONTSIZE
-  [LAMBDA (TITLE FONTFAMILY SKW)                             (* rrb " 6-Nov-85 09:51")
-          
-          (* * gets a legal known font size from the user.)
-          
-          (* this should have MENUROWS _ 1 when title height bug in menu package gets 
-          fixed.)
+  [LAMBDA (TITLE FONTFAMILY SKW)                             (* ; "Edited  4-Nov-2025 20:12 by rmk")
+                                                             (* rrb " 6-Nov-85 09:51")
 
-    (PROG ((FONTSIZES (SK.COLLECT.FONT.SIZES FONTFAMILY))
-           NEWSIZE)
-          (COND
-             ((NULL FONTSIZES)
-              (GO MORE)))
-          (SETQ NEWSIZE (\CURSOR.IN.MIDDLE.MENU (create MENU
-                                                       TITLE _ (COND
-                                                                  (TITLE)
-                                                                  (FONTFAMILY (CONCAT "new " 
-                                                                                     FONTFAMILY 
-                                                                                     " size?"))
-                                                                  (T "New font size?"))
-                                                       ITEMS _ (CONS '(More 'MORE 
-                                                  "will look on font directories to find more sizes."
-                                                                            ) FONTSIZES)
-                                                       CENTERFLG _ T)))
-          (COND
-             ((NEQ NEWSIZE 'MORE)
-              (RETURN NEWSIZE)))
-      MORE
-                                                             (* do longer search of files)
-          (SETQ NEWSIZE (SK.COLLECT.FONT.SIZES FONTFAMILY T))
-          (COND
-             ((NULL NEWSIZE)                                 (* could not find any fonts of that 
-                                                             family)
-              (RETURN NIL))
-             ((EQUAL NEWSIZE FONTSIZES)                      (* not new ones found)
-              (STATUSPRINT SKW "
-No more font sizes found.")))
-          (RETURN (MENU (create MENU
-                               TITLE _ (OR TITLE "New font size?")
-                               ITEMS _ NEWSIZE
-                               CENTERFLG _ T])
+    (* ;; "Gets a legal known font size from the user.")
+                                                             (* ; "this should have MENUROWS _ 1 when title height bug in menu package gets fixed. RMK 2025:  Is this still an issue?")
+    (CL:UNLESS TITLE
+        (SETQ TITLE (CONCAT "New " (OR FONTFAMILY "font")
+                           " size?")))
+    (LET ((FONTSIZES (SK.COLLECT.FONT.SIZES FONTFAMILY))
+          (NEWSIZE 'MORE))
+         (CL:WHEN FONTSIZES
+             (SETQ NEWSIZE (\CURSOR.IN.MIDDLE.MENU (create MENU
+                                                          TITLE _ TITLE
+                                                          ITEMS _ (NCONC1 FONTSIZES
+                                                                         '(More 'MORE 
+                                                   "Look on font-file directories to find more sizes"
+                                                                                ))
+                                                          CENTERFLG _ T))))
+         (CL:WHEN (EQ NEWSIZE 'MORE)                         (* ; "do longer search of files")
+             (SETQ FONTSIZES (LDIFFERENCE (SK.COLLECT.FONT.SIZES FONTFAMILY 'ONLY)
+                                    FONTSIZES))
+             (SETQ NEWSIZE
+              (if FONTSIZES
+                  then (MENU (create MENU
+                                    TITLE _ TITLE
+                                    ITEMS _ FONTSIZES
+                                    CENTERFLG _ T))
+                else (STATUSPRINT SKW "
+No more font sizes found.")
+                     NIL)))
+         NEWSIZE])
 
 (SK.COLLECT.FONT.SIZES
-  [LAMBDA (FAMILY FILESTOOFLG)                               (* rrb " 2-Oct-85 10:43")
-          
-          (* collects all of the sizes that are known.
-          If FAMILY is given, gets just those sizes.)
+  [LAMBDA (FAMILY FILESTOOFLG)                               (* ; "Edited  4-Nov-2025 20:02 by rmk")
+                                                             (* rrb " 2-Oct-85 10:43")
 
-    (PROG (INCORESIZES FILESIZES)
-          [COND
-             [FAMILY (for TYPEBUCKET in (CDR (FASSOC FAMILY \FONTSONFILE))
-                        do (for FFONT in (CDR TYPEBUCKET) do (OR (MEMB (CADR FFONT)
-                                                                       INCORESIZES)
-                                                                 (SETQ INCORESIZES
-                                                                  (CONS (CADR FFONT)
-                                                                        INCORESIZES]
-             (T                                              (* look at all fonts)
-                (for FAMILYBUCKET in \FONTSONFILE
-                   do (for TYPEBUCKET in (CDR FAMILYBUCKET)
-                         do (for FFONT in (CDR TYPEBUCKET) do (OR (MEMB (CADR FFONT)
-                                                                        INCORESIZES)
-                                                                  (SETQ INCORESIZES
-                                                                   (CONS (CADR FFONT)
-                                                                         INCORESIZES]
-          (RETURN (SORT (UNION INCORESIZES
-                               (COND
-                                  [FILESTOOFLG
-          
-          (* wants those on files too, Flip the cursor to note wait.)
+    (* ;; "Collects all of the sizes that are known.  If FAMILY is given, gets just those sizes.")
 
-                                   (RESETFORM (CURSOR WAITINGCURSOR)
-                                          (bind SIZES for FONT
-                                             in (FONTSAVAILABLE (OR FAMILY '*)
-                                                       '* NIL NIL 'DISPLAY T)
-                                             do (OR (MEMB (FONTPROP FONT 'SIZE)
-                                                          SIZES)
-                                                    (SETQ SIZES (CONS (FONTPROP FONT 'SIZE)
-                                                                      SIZES)))
-                                             finally (RETURN SIZES]
-                                  (T (bind SIZES for FONT in (FONTSAVAILABLE (OR FAMILY '*)
-                                                                    '* NIL NIL 'DISPLAY FILESTOOFLG)
-                                        do (OR (MEMB (FONTPROP FONT 'SIZE)
-                                                     SIZES)
-                                               (SETQ SIZES (CONS (FONTPROP FONT 'SIZE)
-                                                                 SIZES))) finally (RETURN SIZES])
+    (* ;; "RMK:  Original code seemed confused.  The \FONTSONFILE variable (set originally only by SK.GUESS.FONTSAVAILBLE in the call from SK.DECREASING.FONT.LIST) maintained a cache just of the fonts that had already been looked up for particular families and particular devices.  But then it called FONTSAVAILABLE only for the DISPLAY device.")
+
+    (for FS SIZES in (FONTSAVAILABLE (OR FAMILY '*)
+                            '* NIL NIL 'DISPLAY FILESTOOFLG) do (pushnew SIZES (fetch (FONTSPEC
+                                                                                       FSSIZE)
+                                                                                  of FS))
+       finally (RETURN (SORT SIZES])
 
 (SK.SET.TEXT.VERT.ALIGN
   [LAMBDA (SKW NEWALIGN)                                     (* rrb " 6-Nov-85 09:52")
@@ -6058,8 +5879,6 @@ No more font sizes found.")))
 
 (RPAQ? SK.DEFAULT.TEXT.ALIGNMENT '(CENTER BASELINE))
 
-(RPAQ? \FONTSONFILE NIL)
-
 (ADDTOVAR SK.HORIZONTAL.STYLES LEFT RIGHT CENTER)
 
 (ADDTOVAR SK.VERTICAL.STYLES TOP CENTER BASELINE BOTTOM)
@@ -9280,137 +9099,136 @@ No more font sizes found.")))
            (fetch (REGION TOP) of REGION])
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (14510 24920 (INIT.SKETCH.ELEMENTS 14520 . 22083) (CREATE.SKETCH.ELEMENT.TYPE 22085 . 
-23607) (SKETCH.ELEMENT.TYPEP 23609 . 23997) (SKETCH.ELEMENT.NAMEP 23999 . 24262) (
-\CURSOR.IN.MIDDLE.MENU 24264 . 24918)) (24961 25638 (SKETCHINCOLORP 24971 . 25291) (READ.COLOR.CHANGE 
-25293 . 25636)) (26147 28926 (SK.CREATE.DEFAULT.FILLING 26157 . 26458) (SKFILLINGP 26460 . 27093) (
-SK.INSURE.FILLING 27095 . 28523) (SK.INSURE.COLOR 28525 . 28924)) (28927 34537 (SK.TRANSLATE.MODE 
-28937 . 29719) (SK.CHANGE.FILLING.MODE 29721 . 33304) (READ.FILLING.MODE 33306 . 34535)) (34538 65212 
-(SKETCH.CREATE.CIRCLE 34548 . 35360) (CIRCLE.EXPANDFN 35362 . 38734) (CIRCLE.DRAWFN 38736 . 41737) (
-\CIRCLE.DRAWFN1 41739 . 44334) (CIRCLE.INPUTFN 44336 . 46185) (SK.UPDATE.CIRCLE.AFTER.CHANGE 46187 . 
-46546) (SK.READ.CIRCLE.POINT 46548 . 47019) (SK.SHOW.CIRCLE 47021 . 47667) (CIRCLE.INSIDEFN 47669 . 
-47934) (CIRCLE.REGIONFN 47936 . 49617) (CIRCLE.GLOBALREGIONFN 49619 . 51137) (CIRCLE.TRANSLATE 51139
- . 53000) (CIRCLE.READCHANGEFN 53002 . 57618) (CIRCLE.TRANSFORMFN 57620 . 59473) (CIRCLE.TRANSLATEPTS 
-59475 . 61089) (SK.CIRCLE.CREATE 61091 . 61934) (SET.CIRCLE.SCALE 61936 . 62702) (SK.BRUSH.READCHANGE 
-62704 . 65210)) (65213 65942 (SK.INSURE.BRUSH 65223 . 65617) (SK.INSURE.DASHING 65619 . 65940)) (67156
- 96650 (SKETCH.CREATE.ELLIPSE 67166 . 67765) (ELLIPSE.EXPANDFN 67767 . 71379) (ELLIPSE.DRAWFN 71381 . 
-75558) (ELLIPSE.INPUTFN 75560 . 78000) (SK.READ.ELLIPSE.MAJOR.PT 78002 . 78581) (
-SK.SHOW.ELLIPSE.MAJOR.RADIUS 78583 . 79338) (SK.READ.ELLIPSE.MINOR.PT 79340 . 80033) (
-SK.SHOW.ELLIPSE.MINOR.RADIUS 80035 . 80867) (ELLIPSE.INSIDEFN 80869 . 81139) (ELLIPSE.CREATE 81141 . 
-82516) (SK.UPDATE.ELLIPSE.AFTER.CHANGE 82518 . 82886) (ELLIPSE.REGIONFN 82888 . 85088) (
-ELLIPSE.GLOBALREGIONFN 85090 . 86903) (ELLIPSE.TRANSLATEFN 86905 . 89451) (ELLIPSE.TRANSFORMFN 89453
- . 90730) (ELLIPSE.TRANSLATEPTS 90732 . 92773) (MARK.SPOT 92775 . 94026) (DISTANCEBETWEEN 94028 . 
-94623) (SK.DISTANCE.TO 94625 . 95010) (SQUARE 95012 . 95054) (COMPUTE.ELLIPSE.ORIENTATION 95056 . 
-95775) (SK.COMPUTE.ELLIPSE.MINOR.RADIUS.PT 95777 . 96648)) (97763 138819 (SKETCH.CREATE.OPEN.CURVE 
-97773 . 98326) (OPENCURVE.INPUTFN 98328 . 99196) (SK.CURVE.CREATE 99198 . 100943) (MAXXEXTENT 100945
- . 101804) (MAXYEXTENT 101806 . 102666) (KNOT.SET.SCALE.FIELD 102668 . 103470) (OPENCURVE.DRAWFN 
-103472 . 104603) (OPENCURVE.EXPANDFN 104605 . 107920) (OPENCURVE.READCHANGEFN 107922 . 111124) (
-OPENCURVE.TRANSFORMFN 111126 . 113624) (OPENCURVE.TRANSLATEFN 113626 . 114048) (
-OPENCURVE.TRANSLATEPTSFN 114050 . 115431) (SKETCH.CREATE.CLOSED.CURVE 115433 . 115939) (
-CLOSEDCURVE.DRAWFN 115941 . 116725) (CLOSEDCURVE.EXPANDFN 116727 . 119840) (CLOSEDCURVE.REGIONFN 
-119842 . 120639) (CLOSEDCURVE.GLOBALREGIONFN 120641 . 122074) (READ.LIST.OF.POINTS 122076 . 124055) (
-CLOSEDCURVE.INPUTFN 124057 . 124702) (CLOSEDCURVE.READCHANGEFN 124704 . 127599) (
-CLOSEDCURVE.TRANSFORMFN 127601 . 129401) (CLOSEDCURVE.TRANSLATEPTSFN 129403 . 130748) (INVISIBLEPARTP 
-130750 . 131103) (SHOWSKETCHPOINT 131105 . 131410) (SHOWSKETCHXY 131412 . 131930) (KNOTS.REGIONFN 
-131932 . 132833) (OPENWIRE.GLOBALREGIONFN 132835 . 133699) (CURVE.REGIONFN 133701 . 134642) (
-OPENCURVE.GLOBALREGIONFN 134644 . 136051) (KNOTS.TRANSLATEFN 136053 . 137096) (REGION.CONTAINING.PTS 
-137098 . 138817)) (138820 161096 (CHANGE.ELTS.BRUSH.SIZE 138830 . 139440) (CHANGE.ELTS.BRUSH 139442 . 
-139959) (CHANGE.ELTS.BRUSH.SHAPE 139961 . 140362) (SK.CHANGE.BRUSH.SHAPE 140364 . 143876) (
-SK.CHANGE.BRUSH.COLOR 143878 . 148324) (SK.CHANGE.BRUSH.SIZE 148326 . 153284) (SK.CHANGE.ANGLE 153286
- . 156266) (SK.CHANGE.ARC.DIRECTION 156268 . 158647) (SK.SET.DEFAULT.BRUSH.SIZE 158649 . 159348) (
-READSIZECHANGE 159350 . 161094)) (161097 162716 (SK.CHANGE.ELEMENT.KNOTS 161107 . 162714)) (162717 
-163364 (SK.INSURE.POINT.LIST 162727 . 163180) (SK.INSURE.POSITION 163182 . 163362)) (164732 197055 (
-SKETCH.CREATE.WIRE 164742 . 165232) (CLOSEDWIRE.EXPANDFN 165234 . 167922) (KNOTS.INSIDEFN 167924 . 
-168645) (OPEN.WIRE.DRAWFN 168647 . 169239) (WIRE.EXPANDFN 169241 . 172488) (
-SK.UPDATE.WIRE.ELT.AFTER.CHANGE 172490 . 173011) (OPENWIRE.READCHANGEFN 173013 . 175506) (
-OPENWIRE.TRANSFORMFN 175508 . 177631) (OPENWIRE.TRANSLATEFN 177633 . 178057) (OPENWIRE.TRANSLATEPTSFN 
-178059 . 179338) (WIRE.INPUTFN 179340 . 180971) (SK.READ.WIRE.POINTS 180973 . 181504) (
-SK.READ.POINTS.WITH.FEEDBACK 181506 . 184273) (OPENWIRE.FEEDBACKFN 184275 . 185029) (
-CLOSEDWIRE.FEEDBACKFN 185031 . 186387) (CLOSEDWIRE.REGIONFN 186389 . 187374) (
-CLOSEDWIRE.GLOBALREGIONFN 187376 . 188428) (SK.WIRE.CREATE 188430 . 190193) (WIRE.ADD.POINT.TO.END 
-190195 . 191111) (READ.ARROW.CHANGE 191113 . 196589) (CHANGE.ELTS.ARROWHEADS 196591 . 197053)) (197056
- 208062 (SKETCH.CREATE.CLOSED.WIRE 197066 . 197627) (CLOSED.WIRE.INPUTFN 197629 . 197984) (
-CLOSED.WIRE.DRAWFN 197986 . 200031) (CLOSEDWIRE.READCHANGEFN 200033 . 204938) (CLOSEDWIRE.TRANSFORMFN 
-204940 . 206734) (CLOSEDWIRE.TRANSLATEPTSFN 206736 . 208060)) (208063 260769 (SK.EXPAND.ARROWHEADS 
-208073 . 208423) (SK.COMPUTE.ARC.ARROWHEAD.POINTS 208425 . 209806) (ARC.ARROWHEAD.POINTS 209808 . 
-211031) (SET.ARC.ARROWHEAD.POINTS 211033 . 212014) (SET.OPENCURVE.ARROWHEAD.POINTS 212016 . 212917) (
-SK.COMPUTE.CURVE.ARROWHEAD.POINTS 212919 . 214189) (SET.WIRE.ARROWHEAD.POINTS 214191 . 214944) (
-SK.COMPUTE.WIRE.ARROWHEAD.POINTS 214946 . 216211) (SK.EXPAND.ARROWHEAD 216213 . 217396) (CHANGED.ARROW
- 217398 . 220570) (SK.CHANGE.ARROWHEAD 220572 . 221025) (SK.CHANGE.ARROWHEAD1 221027 . 226282) (
-SK.CREATE.ARROWHEAD 226284 . 226804) (SK.ARROWHEAD.CREATE 226806 . 228380) (SK.ARROWHEAD.END.TEST 
-228382 . 229306) (READ.ARROWHEAD.END 229308 . 231333) (ARROW.HEAD.POSITIONS 231335 . 233175) (
-ARROWHEAD.POINTS.LIST 233177 . 237149) (CURVE.ARROWHEAD.POINTS 237151 . 238014) (LEFT.MOST.IS.BEGINP 
-238016 . 238897) (WIRE.ARROWHEAD.POINTS 238899 . 240425) (DRAWARROWHEADS 240427 . 242797) (
-\SK.DRAW.TRIANGLE.ARROWHEAD 242799 . 244459) (\SK.ENDPT.OF.ARROW 244461 . 246718) (
-\SK.ADJUST.FOR.ARROWHEADS 246720 . 249225) (SK.SET.ARROWHEAD.LENGTH 249227 . 250371) (
-SK.SET.ARROWHEAD.ANGLE 250373 . 251469) (SK.SET.ARROWHEAD.TYPE 251471 . 254760) (SK.SET.LINE.ARROWHEAD
- 254762 . 257175) (SK.UPDATE.ARROWHEAD.FORMAT 257177 . 259287) (SK.SET.LINE.LENGTH.MODE 259289 . 
-260767)) (260770 262571 (SK.INSURE.ARROWHEADS 260780 . 261962) (SK.ARROWHEADP 261964 . 262569)) (
-265368 327694 (SKETCH.CREATE.TEXT 265378 . 265892) (TEXT.CHANGEFN 265894 . 266286) (TEXT.READCHANGEFN 
-266288 . 274359) (\SK.READ.FONT.SIZE1 274361 . 276257) (SK.TEXT.ELT.WITH.SAME.FIELDS 276259 . 277899) 
-(SK.READFONTFAMILY 277901 . 279447) (CLOSE.PROMPT.WINDOW 279449 . 279873) (TEXT.DRAWFN 279875 . 280596
-) (TEXT.DRAWFN1 280598 . 284100) (TEXT.INSIDEFN 284102 . 284491) (TEXT.EXPANDFN 284493 . 286618) (
-SK.TEXT.LINE.REGIONS 286620 . 288494) (TEXT.UPDATE.GLOBAL.REGIONS 288496 . 289728) (REL.MOVE.REGION 
-289730 . 290267) (LTEXT.LINE.REGIONS 290269 . 293687) (TEXT.INPUTFN 293689 . 294199) (READ.TEXT 294201
- . 294949) (TEXT.POSITION.AND.CREATE 294951 . 297262) (CREATE.TEXT.ELEMENT 297264 . 298082) (
-SK.UPDATE.TEXT.AFTER.CHANGE 298084 . 298486) (SK.TEXT.FROM.TEXTBOX 298488 . 302294) (
-TEXT.SET.GLOBAL.REGIONS 302296 . 303589) (TEXT.REGIONFN 303591 . 304361) (TEXT.GLOBALREGIONFN 304363
- . 305051) (TEXT.TRANSLATEFN 305053 . 306368) (TEXT.TRANSFORMFN 306370 . 307493) (TEXT.TRANSLATEPTSFN 
-307495 . 308012) (TEXT.UPDATEFN 308014 . 312670) (SK.CHANGE.TEXT 312672 . 325760) (TEXT.SET.SCALES 
-325762 . 326730) (BREAK.AT.CARRIAGE.RETURNS 326732 . 327692)) (327695 346219 (ADD.KNOWN.SKETCH.FONT 
-327705 . 328696) (SK.PICK.FONT 328698 . 334230) (SK.CHOOSE.TEXT.FONT 334232 . 338180) (SK.NEXTSIZEFONT
- 338182 . 339449) (SK.DECREASING.FONT.LIST 339451 . 341324) (SK.GUESS.FONTSAVAILABLE 341326 . 346217))
- (346638 360781 (SK.SET.FONT 346648 . 348215) (SK.SET.TEXT.FONT 348217 . 349219) (SK.SET.TEXT.SIZE 
-349221 . 349908) (SK.SET.TEXT.HORIZ.ALIGN 349910 . 351484) (SK.READFONTSIZE 351486 . 353716) (
-SK.COLLECT.FONT.SIZES 353718 . 356636) (SK.SET.TEXT.VERT.ALIGN 356638 . 358680) (SK.SET.TEXT.LOOKS 
-358682 . 360139) (SK.SET.DEFAULT.TEXT.FACE 360141 . 360779)) (360782 361368 (CREATE.SKETCH.TERMTABLE 
-360792 . 361366)) (361369 363135 (SK.FONT.LIST 361379 . 361705) (SK.INSURE.FONT 361707 . 362229) (
-SK.INSURE.STYLE 362231 . 362749) (SK.INSURE.TEXT 362751 . 363133)) (363705 420998 (
-SKETCH.CREATE.TEXTBOX 363715 . 365357) (SK.COMPUTE.TEXTBOX.REGION.FOR.STRING 365359 . 367436) (
-SK.BREAK.INTO.LINES 367438 . 378624) (SK.BRUSH.SIZE 378626 . 379007) (SK.TEXTBOX.CREATE 379009 . 
-379806) (SK.TEXTBOX.CREATE1 379808 . 380872) (SK.UPDATE.TEXTBOX.AFTER.CHANGE 380874 . 381414) (
-SK.TEXTBOX.POSITION.IN.BOX 381416 . 383327) (TEXTBOX.CHANGEFN 383329 . 383803) (TEXTBOX.DRAWFN 383805
- . 385841) (SK.TEXTURE.AROUND.REGIONS 385843 . 391916) (ALL.EMPTY.REGIONS 391918 . 392408) (
-TEXTBOX.EXPANDFN 392410 . 399566) (TEXTBOX.INPUTFN 399568 . 401181) (TEXTBOX.INSIDEFN 401183 . 401596)
- (TEXTBOX.REGIONFN 401598 . 402452) (TEXTBOX.GLOBALREGIONFN 402454 . 402782) (
-TEXTBOX.SET.GLOBAL.REGIONS 402784 . 404115) (TEXTBOX.TRANSLATEFN 404117 . 405958) (
-TEXTBOX.TRANSLATEPTSFN 405960 . 408743) (TEXTBOX.TRANSFORMFN 408745 . 410413) (TEXTBOX.UPDATEFN 410415
- . 412308) (TEXTBOX.READCHANGEFN 412310 . 417199) (SK.TEXTBOX.TEXT.POSITION 417201 . 417622) (
-SK.TEXTBOX.FROM.TEXT 417624 . 420229) (ADD.EOLS 420231 . 420996)) (421527 425028 (
-SK.SET.TEXTBOX.VERT.ALIGN 421537 . 423417) (SK.SET.TEXTBOX.HORIZ.ALIGN 423419 . 425026)) (425411 
-469886 (SKETCH.CREATE.BOX 425421 . 425904) (SK.BOX.DRAWFN 425906 . 427065) (BOX.DRAWFN1 427067 . 
-429906) (KNOTS.OF.REGION 429908 . 431142) (SK.DRAWAREABOX 431144 . 437745) (SK.DRAWBOX 437747 . 438936
-) (SK.BOX.EXPANDFN 438938 . 442686) (SK.BOX.GETREGIONFN 442688 . 443874) (BOX.SET.SCALES 443876 . 
-445116) (SK.BOX.INPUTFN 445118 . 447051) (SK.BOX.CREATE 447053 . 447754) (SK.UPDATE.BOX.AFTER.CHANGE 
-447756 . 448267) (SK.BOX.INSIDEFN 448269 . 448659) (SK.BOX.REGIONFN 448661 . 449374) (
-SK.BOX.GLOBALREGIONFN 449376 . 450114) (SK.BOX.READCHANGEFN 450116 . 453837) (SK.CHANGE.FILLING 453839
- . 457787) (SK.CHANGE.FILLING.COLOR 457789 . 461445) (SK.BOX.TRANSLATEFN 461447 . 462626) (
-SK.BOX.TRANSFORMFN 462628 . 463573) (SK.BOX.TRANSLATEPTSFN 463575 . 465943) (UNSCALE.REGION.TO.GRID 
-465945 . 466870) (INCREASEREGION 466872 . 467463) (INSUREREGIONSIZE 467465 . 468636) (EXPANDREGION 
-468638 . 469518) (REGION.FROM.COORDINATES 469520 . 469884)) (470422 496777 (SKETCH.CREATE.ARC 470432
- . 471241) (ARC.DRAWFN 471243 . 472970) (ARC.EXPANDFN 472972 . 475305) (ARC.INPUTFN 475307 . 479525) (
-SK.INVERT.CIRCLE 479527 . 480387) (SK.READ.ARC.ANGLE.POINT 480389 . 480896) (SK.SHOW.ARC 480898 . 
-481508) (ARC.CREATE 481510 . 482865) (SK.UPDATE.ARC.AFTER.CHANGE 482867 . 483207) (ARC.MOVEFN 483209
- . 484792) (ARC.TRANSLATEPTS 484794 . 486679) (ARC.INSIDEFN 486681 . 486931) (ARC.REGIONFN 486933 . 
-488069) (ARC.GLOBALREGIONFN 488071 . 489793) (ARC.TRANSLATE 489795 . 490777) (ARC.TRANSFORMFN 490779
- . 493729) (ARC.READCHANGEFN 493731 . 496775)) (496778 505857 (SK.COMPUTE.ARC.ANGLE.PT 496788 . 497714
-) (SK.COMPUTE.ARC.ANGLE.PT.FROM.ANGLE 497716 . 498709) (SK.COMPUTE.ARC.PTS 498711 . 502283) (
-SK.SET.ARC.DIRECTION 502285 . 502859) (SK.SET.ARC.DIRECTION.CW 502861 . 503035) (
-SK.SET.ARC.DIRECTION.CCW 503037 . 503310) (SK.COMPUTE.SLOPE.OF.LINE 503312 . 503804) (
-SK.CREATE.ARC.USING 503806 . 505043) (SET.ARC.SCALES 505045 . 505855)) (505858 506303 (
-SK.INSURE.DIRECTION 505868 . 506301)) (507674 553533 (GETSKETCHELEMENTPROP 507684 . 508992) (
-\SK.GET.ARC.ANGLEPT 508994 . 509555) (\GETSKETCHELEMENTPROP1 509557 . 509811) (\SK.GET.BRUSH 509813 . 
-510737) (\SK.GET.FILLING 510739 . 511837) (\SK.GET.ARROWHEADS 511839 . 512618) (\SK.GET.FONT 512620 . 
-513100) (\SK.GET.JUSTIFICATION 513102 . 513626) (\SK.GET.DIRECTION 513628 . 514105) (\SK.GET.DASHING 
-514107 . 515126) (PUTSKETCHELEMENTPROP 515128 . 517397) (\SK.PUT.FILLING 517399 . 518669) (
-ADDSKETCHELEMENTPROP 518671 . 519476) (REMOVESKETCHELEMENTPROP 519478 . 520267) (\SK.PUT.FONT 520269
- . 521083) (\SK.PUT.JUSTIFICATION 521085 . 522096) (\SK.PUT.DIRECTION 522098 . 522705) (
-\SK.PUT.DASHING 522707 . 524042) (\SK.PUT.BRUSH 524044 . 525963) (\SK.PUT.ARROWHEADS 525965 . 527931) 
-(SK.COPY.ELEMENT.PROPERTY.LIST 527933 . 528509) (SKETCH.UPDATE 528511 . 529241) (SKETCH.UPDATE1 529243
- . 530531) (\SKELT.GET.SCALE 530533 . 531521) (\SKELT.PUT.SCALE 531523 . 532830) (\SKELT.PUT.DATA 
-532832 . 534629) (SK.REPLACE.TEXT.IN.ELEMENT 534631 . 535584) (\SKELT.GET.DATA 535586 . 536653) (
-\SK.GET.1STCONTROLPT 536655 . 538167) (\SK.PUT.1STCONTROLPT 538169 . 543642) (\SK.GET.2NDCONTROLPT 
-543644 . 544559) (\SK.PUT.2NDCONTROLPT 544561 . 548749) (\SK.GET.3RDCONTROLPT 548751 . 549629) (
-\SK.PUT.3RDCONTROLPT 549631 . 553531)) (553534 554115 (LOWERLEFTCORNER 553544 . 553790) (
-UPPERRIGHTCORNER 553792 . 554113)))))
+  (FILEMAP (NIL (14369 24779 (INIT.SKETCH.ELEMENTS 14379 . 21942) (CREATE.SKETCH.ELEMENT.TYPE 21944 . 
+23466) (SKETCH.ELEMENT.TYPEP 23468 . 23856) (SKETCH.ELEMENT.NAMEP 23858 . 24121) (
+\CURSOR.IN.MIDDLE.MENU 24123 . 24777)) (24820 25497 (SKETCHINCOLORP 24830 . 25150) (READ.COLOR.CHANGE 
+25152 . 25495)) (26006 28785 (SK.CREATE.DEFAULT.FILLING 26016 . 26317) (SKFILLINGP 26319 . 26952) (
+SK.INSURE.FILLING 26954 . 28382) (SK.INSURE.COLOR 28384 . 28783)) (28786 34396 (SK.TRANSLATE.MODE 
+28796 . 29578) (SK.CHANGE.FILLING.MODE 29580 . 33163) (READ.FILLING.MODE 33165 . 34394)) (34397 65071 
+(SKETCH.CREATE.CIRCLE 34407 . 35219) (CIRCLE.EXPANDFN 35221 . 38593) (CIRCLE.DRAWFN 38595 . 41596) (
+\CIRCLE.DRAWFN1 41598 . 44193) (CIRCLE.INPUTFN 44195 . 46044) (SK.UPDATE.CIRCLE.AFTER.CHANGE 46046 . 
+46405) (SK.READ.CIRCLE.POINT 46407 . 46878) (SK.SHOW.CIRCLE 46880 . 47526) (CIRCLE.INSIDEFN 47528 . 
+47793) (CIRCLE.REGIONFN 47795 . 49476) (CIRCLE.GLOBALREGIONFN 49478 . 50996) (CIRCLE.TRANSLATE 50998
+ . 52859) (CIRCLE.READCHANGEFN 52861 . 57477) (CIRCLE.TRANSFORMFN 57479 . 59332) (CIRCLE.TRANSLATEPTS 
+59334 . 60948) (SK.CIRCLE.CREATE 60950 . 61793) (SET.CIRCLE.SCALE 61795 . 62561) (SK.BRUSH.READCHANGE 
+62563 . 65069)) (65072 65801 (SK.INSURE.BRUSH 65082 . 65476) (SK.INSURE.DASHING 65478 . 65799)) (67015
+ 96509 (SKETCH.CREATE.ELLIPSE 67025 . 67624) (ELLIPSE.EXPANDFN 67626 . 71238) (ELLIPSE.DRAWFN 71240 . 
+75417) (ELLIPSE.INPUTFN 75419 . 77859) (SK.READ.ELLIPSE.MAJOR.PT 77861 . 78440) (
+SK.SHOW.ELLIPSE.MAJOR.RADIUS 78442 . 79197) (SK.READ.ELLIPSE.MINOR.PT 79199 . 79892) (
+SK.SHOW.ELLIPSE.MINOR.RADIUS 79894 . 80726) (ELLIPSE.INSIDEFN 80728 . 80998) (ELLIPSE.CREATE 81000 . 
+82375) (SK.UPDATE.ELLIPSE.AFTER.CHANGE 82377 . 82745) (ELLIPSE.REGIONFN 82747 . 84947) (
+ELLIPSE.GLOBALREGIONFN 84949 . 86762) (ELLIPSE.TRANSLATEFN 86764 . 89310) (ELLIPSE.TRANSFORMFN 89312
+ . 90589) (ELLIPSE.TRANSLATEPTS 90591 . 92632) (MARK.SPOT 92634 . 93885) (DISTANCEBETWEEN 93887 . 
+94482) (SK.DISTANCE.TO 94484 . 94869) (SQUARE 94871 . 94913) (COMPUTE.ELLIPSE.ORIENTATION 94915 . 
+95634) (SK.COMPUTE.ELLIPSE.MINOR.RADIUS.PT 95636 . 96507)) (97622 138678 (SKETCH.CREATE.OPEN.CURVE 
+97632 . 98185) (OPENCURVE.INPUTFN 98187 . 99055) (SK.CURVE.CREATE 99057 . 100802) (MAXXEXTENT 100804
+ . 101663) (MAXYEXTENT 101665 . 102525) (KNOT.SET.SCALE.FIELD 102527 . 103329) (OPENCURVE.DRAWFN 
+103331 . 104462) (OPENCURVE.EXPANDFN 104464 . 107779) (OPENCURVE.READCHANGEFN 107781 . 110983) (
+OPENCURVE.TRANSFORMFN 110985 . 113483) (OPENCURVE.TRANSLATEFN 113485 . 113907) (
+OPENCURVE.TRANSLATEPTSFN 113909 . 115290) (SKETCH.CREATE.CLOSED.CURVE 115292 . 115798) (
+CLOSEDCURVE.DRAWFN 115800 . 116584) (CLOSEDCURVE.EXPANDFN 116586 . 119699) (CLOSEDCURVE.REGIONFN 
+119701 . 120498) (CLOSEDCURVE.GLOBALREGIONFN 120500 . 121933) (READ.LIST.OF.POINTS 121935 . 123914) (
+CLOSEDCURVE.INPUTFN 123916 . 124561) (CLOSEDCURVE.READCHANGEFN 124563 . 127458) (
+CLOSEDCURVE.TRANSFORMFN 127460 . 129260) (CLOSEDCURVE.TRANSLATEPTSFN 129262 . 130607) (INVISIBLEPARTP 
+130609 . 130962) (SHOWSKETCHPOINT 130964 . 131269) (SHOWSKETCHXY 131271 . 131789) (KNOTS.REGIONFN 
+131791 . 132692) (OPENWIRE.GLOBALREGIONFN 132694 . 133558) (CURVE.REGIONFN 133560 . 134501) (
+OPENCURVE.GLOBALREGIONFN 134503 . 135910) (KNOTS.TRANSLATEFN 135912 . 136955) (REGION.CONTAINING.PTS 
+136957 . 138676)) (138679 160955 (CHANGE.ELTS.BRUSH.SIZE 138689 . 139299) (CHANGE.ELTS.BRUSH 139301 . 
+139818) (CHANGE.ELTS.BRUSH.SHAPE 139820 . 140221) (SK.CHANGE.BRUSH.SHAPE 140223 . 143735) (
+SK.CHANGE.BRUSH.COLOR 143737 . 148183) (SK.CHANGE.BRUSH.SIZE 148185 . 153143) (SK.CHANGE.ANGLE 153145
+ . 156125) (SK.CHANGE.ARC.DIRECTION 156127 . 158506) (SK.SET.DEFAULT.BRUSH.SIZE 158508 . 159207) (
+READSIZECHANGE 159209 . 160953)) (160956 162575 (SK.CHANGE.ELEMENT.KNOTS 160966 . 162573)) (162576 
+163223 (SK.INSURE.POINT.LIST 162586 . 163039) (SK.INSURE.POSITION 163041 . 163221)) (164591 196914 (
+SKETCH.CREATE.WIRE 164601 . 165091) (CLOSEDWIRE.EXPANDFN 165093 . 167781) (KNOTS.INSIDEFN 167783 . 
+168504) (OPEN.WIRE.DRAWFN 168506 . 169098) (WIRE.EXPANDFN 169100 . 172347) (
+SK.UPDATE.WIRE.ELT.AFTER.CHANGE 172349 . 172870) (OPENWIRE.READCHANGEFN 172872 . 175365) (
+OPENWIRE.TRANSFORMFN 175367 . 177490) (OPENWIRE.TRANSLATEFN 177492 . 177916) (OPENWIRE.TRANSLATEPTSFN 
+177918 . 179197) (WIRE.INPUTFN 179199 . 180830) (SK.READ.WIRE.POINTS 180832 . 181363) (
+SK.READ.POINTS.WITH.FEEDBACK 181365 . 184132) (OPENWIRE.FEEDBACKFN 184134 . 184888) (
+CLOSEDWIRE.FEEDBACKFN 184890 . 186246) (CLOSEDWIRE.REGIONFN 186248 . 187233) (
+CLOSEDWIRE.GLOBALREGIONFN 187235 . 188287) (SK.WIRE.CREATE 188289 . 190052) (WIRE.ADD.POINT.TO.END 
+190054 . 190970) (READ.ARROW.CHANGE 190972 . 196448) (CHANGE.ELTS.ARROWHEADS 196450 . 196912)) (196915
+ 207921 (SKETCH.CREATE.CLOSED.WIRE 196925 . 197486) (CLOSED.WIRE.INPUTFN 197488 . 197843) (
+CLOSED.WIRE.DRAWFN 197845 . 199890) (CLOSEDWIRE.READCHANGEFN 199892 . 204797) (CLOSEDWIRE.TRANSFORMFN 
+204799 . 206593) (CLOSEDWIRE.TRANSLATEPTSFN 206595 . 207919)) (207922 260628 (SK.EXPAND.ARROWHEADS 
+207932 . 208282) (SK.COMPUTE.ARC.ARROWHEAD.POINTS 208284 . 209665) (ARC.ARROWHEAD.POINTS 209667 . 
+210890) (SET.ARC.ARROWHEAD.POINTS 210892 . 211873) (SET.OPENCURVE.ARROWHEAD.POINTS 211875 . 212776) (
+SK.COMPUTE.CURVE.ARROWHEAD.POINTS 212778 . 214048) (SET.WIRE.ARROWHEAD.POINTS 214050 . 214803) (
+SK.COMPUTE.WIRE.ARROWHEAD.POINTS 214805 . 216070) (SK.EXPAND.ARROWHEAD 216072 . 217255) (CHANGED.ARROW
+ 217257 . 220429) (SK.CHANGE.ARROWHEAD 220431 . 220884) (SK.CHANGE.ARROWHEAD1 220886 . 226141) (
+SK.CREATE.ARROWHEAD 226143 . 226663) (SK.ARROWHEAD.CREATE 226665 . 228239) (SK.ARROWHEAD.END.TEST 
+228241 . 229165) (READ.ARROWHEAD.END 229167 . 231192) (ARROW.HEAD.POSITIONS 231194 . 233034) (
+ARROWHEAD.POINTS.LIST 233036 . 237008) (CURVE.ARROWHEAD.POINTS 237010 . 237873) (LEFT.MOST.IS.BEGINP 
+237875 . 238756) (WIRE.ARROWHEAD.POINTS 238758 . 240284) (DRAWARROWHEADS 240286 . 242656) (
+\SK.DRAW.TRIANGLE.ARROWHEAD 242658 . 244318) (\SK.ENDPT.OF.ARROW 244320 . 246577) (
+\SK.ADJUST.FOR.ARROWHEADS 246579 . 249084) (SK.SET.ARROWHEAD.LENGTH 249086 . 250230) (
+SK.SET.ARROWHEAD.ANGLE 250232 . 251328) (SK.SET.ARROWHEAD.TYPE 251330 . 254619) (SK.SET.LINE.ARROWHEAD
+ 254621 . 257034) (SK.UPDATE.ARROWHEAD.FORMAT 257036 . 259146) (SK.SET.LINE.LENGTH.MODE 259148 . 
+260626)) (260629 262430 (SK.INSURE.ARROWHEADS 260639 . 261821) (SK.ARROWHEADP 261823 . 262428)) (
+265227 328477 (SKETCH.CREATE.TEXT 265237 . 265751) (TEXT.CHANGEFN 265753 . 266145) (TEXT.READCHANGEFN 
+266147 . 274218) (\SK.READ.FONT.SIZE1 274220 . 276116) (SK.TEXT.ELT.WITH.SAME.FIELDS 276118 . 277758) 
+(SK.READFONTFAMILY 277760 . 280230) (CLOSE.PROMPT.WINDOW 280232 . 280656) (TEXT.DRAWFN 280658 . 281379
+) (TEXT.DRAWFN1 281381 . 284883) (TEXT.INSIDEFN 284885 . 285274) (TEXT.EXPANDFN 285276 . 287401) (
+SK.TEXT.LINE.REGIONS 287403 . 289277) (TEXT.UPDATE.GLOBAL.REGIONS 289279 . 290511) (REL.MOVE.REGION 
+290513 . 291050) (LTEXT.LINE.REGIONS 291052 . 294470) (TEXT.INPUTFN 294472 . 294982) (READ.TEXT 294984
+ . 295732) (TEXT.POSITION.AND.CREATE 295734 . 298045) (CREATE.TEXT.ELEMENT 298047 . 298865) (
+SK.UPDATE.TEXT.AFTER.CHANGE 298867 . 299269) (SK.TEXT.FROM.TEXTBOX 299271 . 303077) (
+TEXT.SET.GLOBAL.REGIONS 303079 . 304372) (TEXT.REGIONFN 304374 . 305144) (TEXT.GLOBALREGIONFN 305146
+ . 305834) (TEXT.TRANSLATEFN 305836 . 307151) (TEXT.TRANSFORMFN 307153 . 308276) (TEXT.TRANSLATEPTSFN 
+308278 . 308795) (TEXT.UPDATEFN 308797 . 313453) (SK.CHANGE.TEXT 313455 . 326543) (TEXT.SET.SCALES 
+326545 . 327513) (BREAK.AT.CARRIAGE.RETURNS 327515 . 328475)) (328478 341098 (SK.PICK.FONT 328488 . 
+332760) (SK.CHOOSE.TEXT.FONT 332762 . 337033) (SK.NEXTSIZEFONT 337035 . 338302) (
+SK.DECREASING.FONT.LIST 338304 . 341096)) (341517 353191 (SK.SET.FONT 341527 . 342794) (
+SK.SET.TEXT.FONT 342796 . 343798) (SK.SET.TEXT.SIZE 343800 . 344487) (SK.SET.TEXT.HORIZ.ALIGN 344489
+ . 346063) (SK.READFONTSIZE 346065 . 347963) (SK.COLLECT.FONT.SIZES 347965 . 349046) (
+SK.SET.TEXT.VERT.ALIGN 349048 . 351090) (SK.SET.TEXT.LOOKS 351092 . 352549) (SK.SET.DEFAULT.TEXT.FACE 
+352551 . 353189)) (353192 353778 (CREATE.SKETCH.TERMTABLE 353202 . 353776)) (353779 355545 (
+SK.FONT.LIST 353789 . 354115) (SK.INSURE.FONT 354117 . 354639) (SK.INSURE.STYLE 354641 . 355159) (
+SK.INSURE.TEXT 355161 . 355543)) (356085 413378 (SKETCH.CREATE.TEXTBOX 356095 . 357737) (
+SK.COMPUTE.TEXTBOX.REGION.FOR.STRING 357739 . 359816) (SK.BREAK.INTO.LINES 359818 . 371004) (
+SK.BRUSH.SIZE 371006 . 371387) (SK.TEXTBOX.CREATE 371389 . 372186) (SK.TEXTBOX.CREATE1 372188 . 373252
+) (SK.UPDATE.TEXTBOX.AFTER.CHANGE 373254 . 373794) (SK.TEXTBOX.POSITION.IN.BOX 373796 . 375707) (
+TEXTBOX.CHANGEFN 375709 . 376183) (TEXTBOX.DRAWFN 376185 . 378221) (SK.TEXTURE.AROUND.REGIONS 378223
+ . 384296) (ALL.EMPTY.REGIONS 384298 . 384788) (TEXTBOX.EXPANDFN 384790 . 391946) (TEXTBOX.INPUTFN 
+391948 . 393561) (TEXTBOX.INSIDEFN 393563 . 393976) (TEXTBOX.REGIONFN 393978 . 394832) (
+TEXTBOX.GLOBALREGIONFN 394834 . 395162) (TEXTBOX.SET.GLOBAL.REGIONS 395164 . 396495) (
+TEXTBOX.TRANSLATEFN 396497 . 398338) (TEXTBOX.TRANSLATEPTSFN 398340 . 401123) (TEXTBOX.TRANSFORMFN 
+401125 . 402793) (TEXTBOX.UPDATEFN 402795 . 404688) (TEXTBOX.READCHANGEFN 404690 . 409579) (
+SK.TEXTBOX.TEXT.POSITION 409581 . 410002) (SK.TEXTBOX.FROM.TEXT 410004 . 412609) (ADD.EOLS 412611 . 
+413376)) (413907 417408 (SK.SET.TEXTBOX.VERT.ALIGN 413917 . 415797) (SK.SET.TEXTBOX.HORIZ.ALIGN 415799
+ . 417406)) (417791 462266 (SKETCH.CREATE.BOX 417801 . 418284) (SK.BOX.DRAWFN 418286 . 419445) (
+BOX.DRAWFN1 419447 . 422286) (KNOTS.OF.REGION 422288 . 423522) (SK.DRAWAREABOX 423524 . 430125) (
+SK.DRAWBOX 430127 . 431316) (SK.BOX.EXPANDFN 431318 . 435066) (SK.BOX.GETREGIONFN 435068 . 436254) (
+BOX.SET.SCALES 436256 . 437496) (SK.BOX.INPUTFN 437498 . 439431) (SK.BOX.CREATE 439433 . 440134) (
+SK.UPDATE.BOX.AFTER.CHANGE 440136 . 440647) (SK.BOX.INSIDEFN 440649 . 441039) (SK.BOX.REGIONFN 441041
+ . 441754) (SK.BOX.GLOBALREGIONFN 441756 . 442494) (SK.BOX.READCHANGEFN 442496 . 446217) (
+SK.CHANGE.FILLING 446219 . 450167) (SK.CHANGE.FILLING.COLOR 450169 . 453825) (SK.BOX.TRANSLATEFN 
+453827 . 455006) (SK.BOX.TRANSFORMFN 455008 . 455953) (SK.BOX.TRANSLATEPTSFN 455955 . 458323) (
+UNSCALE.REGION.TO.GRID 458325 . 459250) (INCREASEREGION 459252 . 459843) (INSUREREGIONSIZE 459845 . 
+461016) (EXPANDREGION 461018 . 461898) (REGION.FROM.COORDINATES 461900 . 462264)) (462802 489157 (
+SKETCH.CREATE.ARC 462812 . 463621) (ARC.DRAWFN 463623 . 465350) (ARC.EXPANDFN 465352 . 467685) (
+ARC.INPUTFN 467687 . 471905) (SK.INVERT.CIRCLE 471907 . 472767) (SK.READ.ARC.ANGLE.POINT 472769 . 
+473276) (SK.SHOW.ARC 473278 . 473888) (ARC.CREATE 473890 . 475245) (SK.UPDATE.ARC.AFTER.CHANGE 475247
+ . 475587) (ARC.MOVEFN 475589 . 477172) (ARC.TRANSLATEPTS 477174 . 479059) (ARC.INSIDEFN 479061 . 
+479311) (ARC.REGIONFN 479313 . 480449) (ARC.GLOBALREGIONFN 480451 . 482173) (ARC.TRANSLATE 482175 . 
+483157) (ARC.TRANSFORMFN 483159 . 486109) (ARC.READCHANGEFN 486111 . 489155)) (489158 498237 (
+SK.COMPUTE.ARC.ANGLE.PT 489168 . 490094) (SK.COMPUTE.ARC.ANGLE.PT.FROM.ANGLE 490096 . 491089) (
+SK.COMPUTE.ARC.PTS 491091 . 494663) (SK.SET.ARC.DIRECTION 494665 . 495239) (SK.SET.ARC.DIRECTION.CW 
+495241 . 495415) (SK.SET.ARC.DIRECTION.CCW 495417 . 495690) (SK.COMPUTE.SLOPE.OF.LINE 495692 . 496184)
+ (SK.CREATE.ARC.USING 496186 . 497423) (SET.ARC.SCALES 497425 . 498235)) (498238 498683 (
+SK.INSURE.DIRECTION 498248 . 498681)) (500054 545913 (GETSKETCHELEMENTPROP 500064 . 501372) (
+\SK.GET.ARC.ANGLEPT 501374 . 501935) (\GETSKETCHELEMENTPROP1 501937 . 502191) (\SK.GET.BRUSH 502193 . 
+503117) (\SK.GET.FILLING 503119 . 504217) (\SK.GET.ARROWHEADS 504219 . 504998) (\SK.GET.FONT 505000 . 
+505480) (\SK.GET.JUSTIFICATION 505482 . 506006) (\SK.GET.DIRECTION 506008 . 506485) (\SK.GET.DASHING 
+506487 . 507506) (PUTSKETCHELEMENTPROP 507508 . 509777) (\SK.PUT.FILLING 509779 . 511049) (
+ADDSKETCHELEMENTPROP 511051 . 511856) (REMOVESKETCHELEMENTPROP 511858 . 512647) (\SK.PUT.FONT 512649
+ . 513463) (\SK.PUT.JUSTIFICATION 513465 . 514476) (\SK.PUT.DIRECTION 514478 . 515085) (
+\SK.PUT.DASHING 515087 . 516422) (\SK.PUT.BRUSH 516424 . 518343) (\SK.PUT.ARROWHEADS 518345 . 520311) 
+(SK.COPY.ELEMENT.PROPERTY.LIST 520313 . 520889) (SKETCH.UPDATE 520891 . 521621) (SKETCH.UPDATE1 521623
+ . 522911) (\SKELT.GET.SCALE 522913 . 523901) (\SKELT.PUT.SCALE 523903 . 525210) (\SKELT.PUT.DATA 
+525212 . 527009) (SK.REPLACE.TEXT.IN.ELEMENT 527011 . 527964) (\SKELT.GET.DATA 527966 . 529033) (
+\SK.GET.1STCONTROLPT 529035 . 530547) (\SK.PUT.1STCONTROLPT 530549 . 536022) (\SK.GET.2NDCONTROLPT 
+536024 . 536939) (\SK.PUT.2NDCONTROLPT 536941 . 541129) (\SK.GET.3RDCONTROLPT 541131 . 542009) (
+\SK.PUT.3RDCONTROLPT 542011 . 545911)) (545914 546495 (LOWERLEFTCORNER 545924 . 546170) (
+UPPERRIGHTCORNER 546172 . 546493)))))
 STOP
diff --git a/library/sketch/SKETCH-ELEMENTS.LCOM b/library/sketch/SKETCH-ELEMENTS.LCOM
index 14b7a802..c26fdc95 100644
Binary files a/library/sketch/SKETCH-ELEMENTS.LCOM and b/library/sketch/SKETCH-ELEMENTS.LCOM differ
diff --git a/library/sketch/SKETCH.LCOM b/library/sketch/SKETCH.LCOM
index 841eab4c..58641092 100644
Binary files a/library/sketch/SKETCH.LCOM and b/library/sketch/SKETCH.LCOM differ
