From abd6b9abc55e28f18afcc3ae2efcd201ca602ac5 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 23 Nov 2025 17:20:37 -0800 Subject: [PATCH 1/9] loadup scripts: set MEDLEY-INIT-VARS to NOBIND before loading MEDLEYDIR So that INITVARS in MEDLEYDIR replaces any previous settings in the loadup-sysout --- scripts/loadups/loadup-init.sh | 1 + scripts/loadups/loadup-lisp-from-mid.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/scripts/loadups/loadup-init.sh b/scripts/loadups/loadup-init.sh index 4a42bd000..c1d5b75e5 100755 --- a/scripts/loadups/loadup-init.sh +++ b/scripts/loadups/loadup-init.sh @@ -11,6 +11,7 @@ main() { (* "make init files; this file is loaded as a 'greet' file by scripts/loadup-init.sh") (SETQ MEDLEYDIR NIL) + (SETATOMVAL (QUOTE MEDLEY-INIT-VARS) (QUOTE NOBIND)) (LOAD (CONCAT (UNIX-GETENV "MEDLEYDIR") "/sources/MEDLEYDIR.LCOM")) (MEDLEY-INIT-VARS) (PUTASSOC (QUOTE MEDLEY) (LIST (UNIX-GETENV (QUOTE LOADUP_COMMIT_ID))) SYSOUTCOMMITS) diff --git a/scripts/loadups/loadup-lisp-from-mid.sh b/scripts/loadups/loadup-lisp-from-mid.sh index df4999b64..42ddb9598 100755 --- a/scripts/loadups/loadup-lisp-from-mid.sh +++ b/scripts/loadups/loadup-lisp-from-mid.sh @@ -12,6 +12,7 @@ main() { (PROGN (SETQ LOADUP-SUCCESS NIL) + (SETATOMVAL (QUOTE MEDLEY-INIT-VARS) (QUOTE NOBIND)) (LOAD (CONCAT (QUOTE {DSK}) (UNIX-GETENV (QUOTE MEDLEYDIR)) (QUOTE /sources/MEDLEYDIR.LCOM))) (MEDLEY-INIT-VARS) (LOAD (CONCAT (QUOTE {DSK}) (UNIX-GETENV (QUOTE LOADUP_SOURCEDIR)) (QUOTE /LOADUP-LISP.LCOM))) From c31bacdd9d7e0528a1738e8980ddb02bd211a4c0 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 23 Nov 2025 17:21:13 -0800 Subject: [PATCH 2/9] FONT: add cache for FONTSAVAILABLE, add FLUSHFONTCACHE --- sources/FONT | 366 +++++++++++++++++++++++++--------------------- sources/FONT.LCOM | Bin 69328 -> 63712 bytes 2 files changed, 199 insertions(+), 167 deletions(-) diff --git a/sources/FONT b/sources/FONT index 6e40fa42a..2a14ba251 100644 --- a/sources/FONT +++ b/sources/FONT @@ -1,13 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "17-Oct-2025 19:43:25" {WMEDLEY}FONT.;621 286216 +(FILECREATED "22-Nov-2025 15:52:25" {WMEDLEY}FONT.;632 286550 :EDIT-BY rmk - :CHANGES-TO (VARS FONTCOMS) - (FNS MONOSPACEFONTP) + :CHANGES-TO (FNS FLUSHFONTCACHE) - :PREVIOUS-DATE "13-Oct-2025 21:33:14" {WMEDLEY}FONT.;620) + :PREVIOUS-DATE "22-Nov-2025 13:50:59" {WMEDLEY}FONT.;631) (PRETTYCOMPRINT FONTCOMS) @@ -26,6 +25,7 @@ GETFONTCLASSCOMPONENT) (MACROS \GETFONTCLASSCOMPONENT \SETFONTCLASSCOMPONENT)) (VARS NSFONTFAMILIES ALTOFONTFAMILIES) + (INITVARS MCCSFONTFAMILIES) (COMS (* ;; "Creation: ") @@ -63,15 +63,20 @@ (FNS FONTCOPY FONTP FONTUNPARSE SETFONTDESCRIPTOR \STREAMCHARWIDTH \COERCECHARSET \BUILDSLUGCSINFO \FONTSYMBOL \DEVICESYMBOL \FONTFACE \FONTFACE.COLOR SETFONTCHARENCODING ) - (FNS FONTSAVAILABLE FONTEXISTS? \SEARCHFONTFILES FLUSHFONTSINCORE FINDFONTFILES SORTFONTSPECS - ) + (FNS FONTSAVAILABLE FONTEXISTS? \SEARCHFONTFILES FLUSHFONTCACHE FLUSHFONTSINCORE + FINDFONTFILES SORTFONTSPECS) (FNS MATCHFONTFACE MAKEFONTFACE FONTFACETOATOM) - (INITVARS \FONTSINCORE \FONTEXISTS?-CACHE \DEFAULTDEVICEFONTS) + (INITVARS \FONTSINCORE \FONTEXISTS?-CACHE \FONTSAVAILABLEFILECACHE \DEFAULTDEVICEFONTS) + + (* ;; "The INITVARS value of MEDLEY-INIT-VARS in MEDLEY dalso includes these entries. That's because FONT is in the INIT, so these entries would be lost when MEDLEY-INIT-VARS is reinitialized when the Lisp loadup starts") + + (ADDVARS (MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE) + (\FONTSAVAILABLEFILECACHE))) [COMS (GLOBALVARS \DEFAULTDEVICEFONTS \UNITWIDTHSVECTOR) (INITVARS \UNITWIDTHSVECTOR) (FNS \UNITWIDTHSVECTOR) (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\UNITWIDTHSVECTOR] - (DECLARE%: DONTCOPY (EXPORT (RECORDS FONTCLASS FONTDESCRIPTOR FONTFACE CHARSETINFO FONTSPEC) + (DECLARE%: DONTCOPY [EXPORT (RECORDS FONTCLASS FONTDESCRIPTOR FONTFACE CHARSETINFO FONTSPEC) (MACROS FONTASCENT FONTDESCENT FONTHEIGHT \FGETOFFSET \FSETOFFSET \FGETWIDTH \FSETWIDTH \FGETCHARWIDTH \FSETCHARWIDTH \FGETIMAGEWIDTH \FSETIMAGEWIDTH) @@ -79,8 +84,7 @@ \CREATECSINFOELEMENT \CREATEFONTCHARSETVECTOR CHARSETPROP) (PROP ARGNAMES CHARSETPROP) (CONSTANTS (SLUGCHARINDEX (ADD1 \MAXTHINCHAR)) - (SLUGCHARSET (ADD1 \MAXCHARSET))) - (MACROS LEGACYFONTS)) + (SLUGCHARSET (ADD1 \MAXCHARSET] (MACROS INDIRECTCHARSETP)) (FNS FONTDESCRIPTOR.DEFPRINT FONTCLASS.DEFPRINT) (INITRECORDS FONTCLASS FONTDESCRIPTOR CHARSETINFO) @@ -505,6 +509,8 @@ (RPAQQ ALTOFONTFAMILIES (TIMESROMAN TIMESROMAND HELVETICA HELVETICAD CLARITY BRAVOX TONTO CREAM OLDENGLISH)) +(RPAQ? MCCSFONTFAMILIES NIL) + (* ;; "Creation: ") @@ -621,7 +627,8 @@ FONTDESC]) (\FONT.CHECKARGS - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 28-Aug-2025 14:46 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE ALWAYSFONTSPEC) (* ; "Edited 22-Nov-2025 11:31 by rmk") + (* ; "Edited 28-Aug-2025 14:46 by rmk") (* ; "Edited 23-Aug-2025 11:54 by rmk") (* ; "Edited 17-Aug-2025 19:15 by rmk") (* ; "Edited 12-Aug-2025 22:36 by rmk") @@ -718,7 +725,8 @@ (* ;; "Return FONTX only if no fields were overwritten") - (CL:UNLESS (AND (EQ SIZE (fetch (FONTDESCRIPTOR FONTSIZE) of FONTX)) + (CL:UNLESS (AND (NOT ALWAYSFONTSPEC) + (EQ SIZE (fetch (FONTDESCRIPTOR FONTSIZE) of FONTX)) (EQUAL FACE (fetch (FONTDESCRIPTOR FONTFACE) of FONTX)) (EQ ROTATION (fetch (FONTDESCRIPTOR ROTATION) of FONTX)) (EQ DEVICE (fetch (FONTDESCRIPTOR FONTDEVICE) of FONTX))) @@ -821,7 +829,8 @@ (CLOSEF? STRM))))]) (\READCHARSET - [LAMBDA (FONTSPEC CHARSET FONT) (* ; "Edited 2-Sep-2025 23:57 by rmk") + [LAMBDA (FONTSPEC CHARSET FONT) (* ; "Edited 11-Nov-2025 14:30 by rmk") + (* ; "Edited 2-Sep-2025 23:57 by rmk") (* ; "Edited 28-Aug-2025 23:17 by rmk") (* ; "Edited 25-Aug-2025 12:03 by rmk") (* ; "Edited 16-Aug-2025 18:00 by rmk") @@ -855,17 +864,15 @@ (* ;; "The file didn't know its own encoding") (SETQ FAMILY (fetch (FONTSPEC FSFAMILY) of FONTSPEC)) - (CHARSETPROP CSINFO 'CSCHARENCODING (if (NEQ CHARSET 0) - then 'MCCS - elseif (MEMB FAMILY - NSFONTFAMILIES - ) - then 'XCCS$ - elseif (MEMB FAMILY - ALTOFONTFAMILIES - ) - then 'ALTOTEXT - else FAMILY))) + (CHARSETPROP CSINFO 'CSCHARENCODING + (if (OR (NEQ CHARSET 0) + (MEMB FAMILY MCCSFONTFAMILIES)) + then 'MCCS + elseif (MEMB FAMILY NSFONTFAMILIES) + then 'XCCS$ + elseif (MEMB FAMILY ALTOFONTFAMILIES) + then 'ALTOTEXT + else FAMILY))) (* ;; "Remember the file that this basic charset information came from, before any character coercions, for informational purposes. Path and version won't be valid if sysout moves, or if PSEUDOFILENAME's aren't aligned. Don't want files to be new atoms, for loadup.") @@ -883,7 +890,8 @@ (DEFINEQ (\FONT.CHECKARGS - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 28-Aug-2025 14:46 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE ALWAYSFONTSPEC) (* ; "Edited 22-Nov-2025 11:31 by rmk") + (* ; "Edited 28-Aug-2025 14:46 by rmk") (* ; "Edited 23-Aug-2025 11:54 by rmk") (* ; "Edited 17-Aug-2025 19:15 by rmk") (* ; "Edited 12-Aug-2025 22:36 by rmk") @@ -980,7 +988,8 @@ (* ;; "Return FONTX only if no fields were overwritten") - (CL:UNLESS (AND (EQ SIZE (fetch (FONTDESCRIPTOR FONTSIZE) of FONTX)) + (CL:UNLESS (AND (NOT ALWAYSFONTSPEC) + (EQ SIZE (fetch (FONTDESCRIPTOR FONTSIZE) of FONTX)) (EQUAL FACE (fetch (FONTDESCRIPTOR FONTFACE) of FONTX)) (EQ ROTATION (fetch (FONTDESCRIPTOR ROTATION) of FONTX)) (EQ DEVICE (fetch (FONTDESCRIPTOR FONTDEVICE) of FONTX))) @@ -998,7 +1007,8 @@ (DEFINEQ (COERCEFONTSPEC - [LAMBDA (FONTSPEC COERCIONS) (* ; "Edited 5-Oct-2025 09:41 by rmk") + [LAMBDA (FONTSPEC COERCIONS) (* ; "Edited 9-Nov-2025 17:54 by rmk") + (* ; "Edited 5-Oct-2025 09:41 by rmk") (* ; "Edited 28-Aug-2025 14:41 by rmk") (* ; "Edited 25-Aug-2025 10:22 by rmk") (* ; "Edited 17-Aug-2025 19:15 by rmk") @@ -1012,11 +1022,14 @@ (* ;; "Doesn't make sense to coerce the device, DEVICE and also CHARSET are just carried along.") + (CL:WHEN (LITATOM COERCIONS) + [SETQ COERCIONS (FONTDEVICEPROP FONTSPEC (OR COERCIONS 'FONTCOERCIONS]) + (* ;; "A NIL match component matches everything, and a NIL target component denotes the corresponding argument.") (for C MATCH TARGET MFAMILY MSIZE MFACE MROTATION TFAMILY TSIZE TFACE TROTATION COERCED FAMILY - SIZE FACE ROTATION DEVICE in (OR COERCIONS (FONTDEVICEPROP FONTSPEC 'FONTCOERCIONS)) - first (SPREADFONTSPEC FONTSPEC) eachtime (SETQ MATCH (MKLIST (CAR C))) + SIZE FACE ROTATION DEVICE in COERCIONS first (SPREADFONTSPEC FONTSPEC) + eachtime (SETQ MATCH (MKLIST (CAR C))) when [AND (COERCEFONTSPEC.MATCH (pop MATCH) FAMILY) (COERCEFONTSPEC.MATCH (pop MATCH) @@ -1092,17 +1105,22 @@ (DEFINEQ (MAKEFONTSPEC - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 28-Aug-2025 14:32 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE BASE) (* ; "Edited 7-Nov-2025 07:52 by rmk") + (* ; "Edited 28-Aug-2025 14:32 by rmk") (* ; "Edited 17-Aug-2025 20:44 by rmk") (* ;; "This is a function, not a macro, so that it can be used in the loadup sequence to create the FONTSPEC for the \GUARANTEEDDISPLAYFONT. That font is created by \CREATEFONT and therefore is not dependent on \FONT.CHECKARGS or on the multi-alist multi-key indexing functions. The strategy might change if MULTI-ALIST is moved earlier in the loadup sequence.") + (* ;; "BASE (fontspec or font) provides defaults for NIL arguments, essentialy models a (create using BASE...)") + + (CL:WHEN (FONTP BASE) + (SETQ BASE (FONTPROP BASE 'SPEC))) (create FONTSPEC - FSFAMILY _ FAMILY - FSSIZE _ SIZE - FSFACE _ FACE - FSROTATION _ ROTATION - FSDEVICE _ DEVICE]) + FSFAMILY _ (OR FAMILY (fetch (FONTSPEC FSFAMILY) of BASE)) + FSSIZE _ (OR SIZE (fetch (FONTSPEC FSSIZE) of BASE)) + FSFACE _ (OR FACE (fetch (FONTSPEC FSFACE) of BASE)) + FSROTATION _ (OR ROTATION (fetch (FONTSPEC FSROTATION) of BASE)) + FSDEVICE _ (OR DEVICE (fetch (FONTSPEC FSDEVICE) of BASE]) ) (DEFINEQ @@ -2795,7 +2813,9 @@ (DEFINEQ (FONTSAVAILABLE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) (* ; "Edited 25-Sep-2025 18:39 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) (* ; "Edited 22-Nov-2025 11:32 by rmk") + (* ; "Edited 6-Nov-2025 13:50 by rmk") + (* ; "Edited 25-Sep-2025 18:39 by rmk") (* ; "Edited 30-Aug-2025 13:55 by rmk") (* ; "Edited 28-Aug-2025 14:43 by rmk") (* ; "Edited 23-Aug-2025 10:51 by rmk") @@ -2810,48 +2830,63 @@ (* ;;; "returns a list of the fonts fitting a description that are available. FAMILY SIZE FACE or ROTATION can be * which means get them all. if CHECKFILESTOO? is NIL, only fonts in core will be considered. If ONLY, fonts in memory will be ignored. ") - (DECLARE (GLOBALVARS \FONTSINCORE)) - (LET ((FONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE))) - (if (EQ '* (fetch (FONTSPEC FSDEVICE) of FONTSPEC)) - then - (* ;; + (DECLARE (GLOBALVARS \FONTSINCORE \FONTSAVAILABLEFILECACHE)) + (LET + ((FONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE T)) + FILEFONTS) + (if (EQ '* (fetch (FONTSPEC FSDEVICE) of FONTSPEC)) + then + (* ;;  "The results for each device will be grouped together, because the sort happens in the clause below") - (for I in IMAGESTREAMTYPES join (FONTSAVAILABLE FONTSPEC NIL NIL NIL (CAR I) - CHECKFILESTOO?)) - else (SPREADFONTSPEC FONTSPEC) (* ; "For easier matching code") - (SORTFONTSPECS (UNION (CL:UNLESS (EQ 'ONLY CHECKFILESTOO?) - [COLLECTMULTI \FONTSINCORE - (FUNCTION (LAMBDA (FM S FC R D FONT) - (DECLARE (USEDFREE $$COLLECT)) - (CL:WHEN - [AND (OR (EQ FAMILY FM) - (EQ FAMILY '*)) - (OR (EQ SIZE S) - (EQ SIZE '*)) - (MATCHFONTFACE FACE FC) - (OR (EQ ROTATION R) - (EQ ROTATION '*)) - (OR (EQ DEVICE D) - (EQ DEVICE '*] - (push $$COLLECT - (create FONTSPEC - FSFAMILY _ FM - FSSIZE _ S - FSFACE _ FC - FSROTATION _ R - FSDEVICE _ D)))]) - (CL:WHEN CHECKFILESTOO?(* ; + (for I in IMAGESTREAMTYPES join (FONTSAVAILABLE FONTSPEC NIL NIL NIL (CAR I) + CHECKFILESTOO?)) + else + (SPREADFONTSPEC FONTSPEC) (* ; "For easier matching code") + (SORTFONTSPECS + (UNION (CL:UNLESS (EQ 'ONLY CHECKFILESTOO?) + [COLLECTMULTI \FONTSINCORE + (FUNCTION (LAMBDA (FM S FC R D FONT) + (DECLARE (USEDFREE $$COLLECT)) + (CL:WHEN [AND (OR (EQ FAMILY FM) + (EQ FAMILY '*)) + (OR (EQ SIZE S) + (EQ SIZE '*)) + (MATCHFONTFACE FACE FC) + (OR (EQ ROTATION R) + (EQ ROTATION '*)) + (OR (EQ DEVICE D) + (EQ DEVICE '*] + (push $$COLLECT + (create FONTSPEC + FSFAMILY _ FM + FSSIZE _ S + FSFACE _ FC + FSROTATION _ R + FSDEVICE _ D)))]) + (CL:WHEN CHECKFILESTOO? (* ;  "apply the device font lookup function.") - (LET [(FN (OR (CAR (GETMULTI IMAGESTREAMTYPES DEVICE - 'FONTSAVAILABLE)) - (FUNCTION \SEARCHFONTFILES] + (SETQ FILEFONTS (SGETMULTI \FONTSAVAILABLEFILECACHE FAMILY SIZE FACE ROTATION + DEVICE)) + + (* ;; "APPEND the cache value because of the SORT") - (* ;; "Until all the device functions take a FONTSPEC") + (APPEND (if (NULL FILEFONTS) + then (LET [(FN (OR (CAR (GETMULTI IMAGESTREAMTYPES DEVICE + 'FONTSAVAILABLE)) + (FUNCTION \SEARCHFONTFILES] - (CL:IF (EQ 1 (NARGS FN)) - (APPLY* FN FONTSPEC) - (APPLY* FN FAMILY SIZE FACE ROTATION DEVICE))))]) + (* ;; "Until all the device functions take a FONTSPEC") + + (SETQ FILEFONTS (CL:IF (EQ 1 (NARGS FN)) + (APPLY* FN FONTSPEC) + (APPLY* FN FAMILY SIZE FACE ROTATION + DEVICE))) + (SPUTMULTI \FONTSAVAILABLEFILECACHE FAMILY SIZE FACE + ROTATION DEVICE (OR FILEFONTS 'NONE)) + FILEFONTS) + elseif (NEQ FILEFONTS 'NONE) + then FILEFONTS)))]) (FONTEXISTS? [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE NOCOERCIONS) (* ; "Edited 26-Sep-2025 10:10 by rmk") @@ -2952,47 +2987,42 @@ FONTSFOUND) do (push FONTSFOUND THISFONT))) finally (RETURN (DREVERSE FONTSFOUND]) +(FLUSHFONTCACHE + [LAMBDA (TYPE FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 22-Nov-2025 15:52 by rmk") + + (* ;; + "Removes information for font(s) from the TYPE cache, if TYPE is NIL, all caches are flushed") + + (CL:UNLESS TYPE + (SETQ TYPE '(:INCORE :EXISTS :AVAILABLE))) (* ; "Edited 22-Nov-2025 10:18 by rmk") + (if (LISTP TYPE) + then (for TY in TYPE collect (FLUSHFONTCACHE TY FAMILY SIZE FACE ROTATION DEVICE)) + else (SPREADFONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE)) + (LET ((NFLUSHED 0)) + (DECLARE (SPECVARS NFLUSHED)) + [MAPMULTI (SELECTQ TYPE + (:INCORE \FONTSINCORE) + (:EXISTS \FONTEXISTS?-CACHE) + (:AVAILABLE \FONTSAVAILABLEFILECACHE) + (\ILLEGAL.ARG TYPE)) + (FUNCTION (LAMBDA (FM S FC R DPAIR) + (CL:WHEN (AND (OR (EQ FAMILY FM) + (EQ FAMILY '*)) + (OR (EQ SIZE S) + (EQ SIZE '*)) + (MATCHFONTFACE FACE FC) + (OR (EQ ROTATION R) + (EQ ROTATION '*)) + (OR (EQ DEVICE (CAR DPAIR)) + (EQ DEVICE '*)) + (CDR DPAIR)) + (ADD NFLUSHED 1) + (RPLACD DPAIR))] + (LIST TYPE NFLUSHED]) + (FLUSHFONTSINCORE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 26-Sep-2025 10:04 by rmk") - (* ; "Edited 4-Sep-2025 10:14 by rmk") - (* ; "Edited 28-Aug-2025 14:44 by rmk") - (* ; "Edited 18-Aug-2025 00:33 by rmk") - (* ; "Edited 12-Aug-2025 21:07 by rmk") - (* ; "Edited 21-Jul-2025 08:59 by rmk") - (* ; "Edited 21-Jun-2025 11:19 by rmk") - (DECLARE (SPECVARS . T) - (GLOBALVARS \FONTSINCORE \FONTEXISTS?-CACHE)) - (SPREADFONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE)) - (LET ((INCOREFLUSHED 0) - (EXISTSFLUSHED 0)) - (DECLARE (SPECVARS INCOREFLUSHED EXISTSFLUSHED)) - [MAPMULTI \FONTSINCORE (FUNCTION (LAMBDA (FM S FC R DPAIR) - (CL:WHEN (AND (OR (EQ FAMILY FM) - (EQ FAMILY '*)) - (OR (EQ SIZE S) - (EQ SIZE '*)) - (MATCHFONTFACE FACE FC) - (OR (EQ ROTATION R) - (EQ ROTATION '*)) - (OR (EQ DEVICE (CAR DPAIR)) - (EQ DEVICE '*)) - (CDR DPAIR)) - (ADD INCOREFLUSHED 1) - (RPLACD DPAIR))] - [MAPMULTI \FONTEXISTS?-CACHE (FUNCTION (LAMBDA (FM S FC R DPAIR) - (CL:WHEN (AND (OR (EQ FAMILY FM) - (EQ FAMILY '*)) - (OR (EQ SIZE S) - (EQ SIZE '*)) - (MATCHFONTFACE FACE FC) - (OR (EQ ROTATION R) - (EQ ROTATION '*)) - (OR (EQ DEVICE (CAR DPAIR)) - (EQ DEVICE '*)) - (CDR DPAIR)) - (ADD EXISTSFLUSHED 1) - (RPLACD DPAIR))] - (LIST INCOREFLUSHED EXISTSFLUSHED]) + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 22-Nov-2025 10:23 by rmk") + (FLUSHFONTCACHE :INCORE FAMILY SIZE FACE ROTATION DEVICE]) (FINDFONTFILES [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE DIRLST EXTLST) (* ; "Edited 28-Aug-2025 14:45 by rmk") @@ -3095,7 +3125,10 @@ (EQ PEXPANSION '*]) (MAKEFONTFACE - [LAMBDA (WEIGHT SLOPE EXPANSION BASE COLOR) (* ; "Edited 30-Aug-2025 10:22 by rmk") + [LAMBDA (WEIGHT SLOPE EXPANSION BASE COLOR) (* ; "Edited 7-Nov-2025 08:50 by rmk") + (* ; "Edited 30-Aug-2025 10:22 by rmk") + (CL:WHEN (FONTP BASE) + (SETQ BASE (FONTPROP BASE 'FACE))) (CL:UNLESS WEIGHT (SETQ WEIGHT (CL:IF BASE (fetch (FONTFACE WEIGHT) of BASE) @@ -3154,7 +3187,19 @@ (RPAQ? \FONTEXISTS?-CACHE NIL) +(RPAQ? \FONTSAVAILABLEFILECACHE NIL) + (RPAQ? \DEFAULTDEVICEFONTS NIL) + + + +(* ;; +"The INITVARS value of MEDLEY-INIT-VARS in MEDLEY dalso includes these entries. That's because FONT is in the INIT, so these entries would be lost when MEDLEY-INIT-VARS is reinitialized when the Lisp loadup starts" +) + + +(ADDTOVAR MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE) + (\FONTSAVAILABLEFILECACHE)) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS \DEFAULTDEVICEFONTS \UNITWIDTHSVECTOR) @@ -3422,19 +3467,6 @@ (CONSTANTS (SLUGCHARINDEX (ADD1 \MAXTHINCHAR)) (SLUGCHARSET (ADD1 \MAXCHARSET))) ) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS LEGACYFONTS MACRO ((F . FORMS) (* ; - "Execute FORMS in a legacy font environment") - (RESETLST - (RESETSAVE \FONTSINCORE NIL) - (RESETSAVE \FONTEXISTS?-CACHE) - (RESETSAVE DISPLAYFONTCOERCIONS) - (RESETSAVE DISPLAYCHARCOERCIONS) - (RESETSAVE DISPLAYFONTEXTENSIONS '(DISPLAYFONT)) - (RESETSAVE DISPLAYFONTDIRECTORIES (MEDLEYDIR "fonts>displayfonts>")) - (PROGN F . FORMS)))) -) (* "END EXPORTED DEFINITIONS") @@ -4650,44 +4682,44 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12132 21845 (CHARWIDTH 12142 . 12927) (CHARWIDTHY 12929 . 14446) (STRINGWIDTH 14448 . -15541) (\CHARWIDTH.DISPLAY 15543 . 15956) (\STRINGWIDTH.DISPLAY 15958 . 16382) (\STRINGWIDTH.GENERIC -16384 . 21843)) (21846 28366 (DEFAULTFONT 21856 . 23141) (FONTCLASS 23143 . 25305) (FONTCLASSUNPARSE -25307 . 26206) (FONTCLASSCOMPONENT 26208 . 26796) (SETFONTCLASSCOMPONENT 26798 . 27240) ( -GETFONTCLASSCOMPONENT 27242 . 28364)) (30045 54426 (FONTCREATE 30055 . 33300) (FONTCREATE1 33302 . -35917) (FONTCREATE.SLUGFD 35919 . 37401) (\FONT.CHECKARGS 37403 . 43993) (\FONT.CHECKARGS1 43995 . -48518) (\FONTCREATE1.NOFN 48520 . 48734) (FONTFILEP 48736 . 49624) (\READCHARSET 49626 . 54424)) ( -54427 61344 (\FONT.CHECKARGS 54437 . 61027) (\CHARSET.CHECK 61029 . 61342)) (61345 64428 ( -COERCEFONTSPEC 61355 . 64426)) (66498 67288 (MAKEFONTSPEC 66508 . 67286)) (67289 75466 (COMPLETE.FONT -67299 . 69822) (COMPLETEFONTP 69824 . 70447) (COMPLETE.CHARSET 70449 . 73134) (PRUNESLUGCSINFOS 73136 - . 74061) (MONOSPACEFONTP 74063 . 75464)) (75505 83426 (FONTASCENT 75515 . 75899) (FONTDESCENT 75901 - . 76386) (FONTHEIGHT 76388 . 76790) (FONTPROP 76792 . 82703) (\AVGCHARWIDTH 82705 . 83424)) (84083 -84991 (FONTDEVICEPROP 84093 . 84989)) (85037 85891 (EDITCHAR 85047 . 85889)) (85937 98127 ( -GETCHARBITMAP 85947 . 87071) (PUTCHARBITMAP 87073 . 89231) (\GETCHARBITMAP.CSINFO 89233 . 91249) ( -\PUTCHARBITMAP.CSINFO 91251 . 98125)) (98128 118608 (MOVECHARBITMAP 98138 . 100032) (MOVEFONTCHARS -100034 . 103994) (\MOVEFONTCHAR 103996 . 108839) (\MOVEFONTCHARS.SOURCEDATA 108841 . 114946) ( -\MAKESLUGCHAR 114948 . 117483) (SLUGCHARP.DISPLAY 117485 . 118606)) (119541 139679 (FONTFILES 119551 - . 121384) (\FINDFONTFILE 121386 . 123103) (\FONTFILENAMES 123105 . 124100) (\FONTFILENAME 124102 . -128085) (\FONTFILENAME.OLD 128087 . 131036) (\FONTFILENAME.NEW 131038 . 133295) (FONTSPECFROMFILENAME -133297 . 137398) (\FONTINFOFROMFILENAME.OLD 137400 . 139677)) (139946 175749 (FONTCOPY 139956 . 145019 -) (FONTP 145021 . 145320) (FONTUNPARSE 145322 . 147041) (SETFONTDESCRIPTOR 147043 . 148507) ( -\STREAMCHARWIDTH 148509 . 152673) (\COERCECHARSET 152675 . 155270) (\BUILDSLUGCSINFO 155272 . 158895) -(\FONTSYMBOL 158897 . 159547) (\DEVICESYMBOL 159549 . 160418) (\FONTFACE 160420 . 167610) ( -\FONTFACE.COLOR 167612 . 174532) (SETFONTCHARENCODING 174534 . 175747)) (175750 196301 (FONTSAVAILABLE - 175760 . 180615) (FONTEXISTS? 180617 . 184595) (\SEARCHFONTFILES 184597 . 187682) (FLUSHFONTSINCORE -187684 . 190857) (FINDFONTFILES 190859 . 194073) (SORTFONTSPECS 194075 . 196299)) (196302 199725 ( -MATCHFONTFACE 196312 . 197127) (MAKEFONTFACE 197129 . 197969) (FONTFACETOATOM 197971 . 199723)) ( -199953 200445 (\UNITWIDTHSVECTOR 199963 . 200443)) (215788 217855 (FONTDESCRIPTOR.DEFPRINT 215798 . -217377) (FONTCLASS.DEFPRINT 217379 . 217853)) (221684 224474 (\CREATEKERNELEMENT 221694 . 222052) ( -\FSETLEFTKERN 222054 . 222545) (\FGETLEFTKERN 222547 . 224472)) (224475 234111 (\CREATEFONT 224485 . -225924) (\CREATECHARSET 225926 . 229862) (\INSTALLCHARSETINFO 229864 . 233198) ( -\INSTALLCHARSETINFO.CHARENCODING 233200 . 234109)) (234433 235797 (\FONTRESETCHARWIDTHS 234443 . -235795)) (236427 246474 (\CREATEDISPLAYFONT 236437 . 238286) (\CREATECHARSET.DISPLAY 238288 . 243997) -(\FONTEXISTS?.DISPLAY 243999 . 246472)) (246475 261340 (STRIKEFONT.FILEP 246485 . 247373) ( -STRIKEFONT.GETCHARSET 247375 . 252967) (WRITESTRIKEFONTFILE 252969 . 257880) (STRIKECSINFO 257882 . -261338)) (261371 277688 (MAKEBOLD.CHARSET 261381 . 265030) (MAKEBOLD.CHAR 265032 . 266784) ( -MAKEITALIC.CHARSET 266786 . 270459) (MAKEITALIC.CHAR 270461 . 272807) (\SFMAKEBOLD 272809 . 275033) ( -\SFMAKEITALIC 275035 . 277686)) (277689 281838 (\SFMAKEROTATEDFONT 277699 . 279100) (\SFROTATECSINFO -279102 . 279739) (\SFROTATEFONTCHARACTERS 279741 . 280121) (\SFROTATECSINFOOFFSETS 280123 . 281836)) ( -281839 283220 (\SFMAKECOLOR 281849 . 283218))))) + (FILEMAP (NIL (12469 22182 (CHARWIDTH 12479 . 13264) (CHARWIDTHY 13266 . 14783) (STRINGWIDTH 14785 . +15878) (\CHARWIDTH.DISPLAY 15880 . 16293) (\STRINGWIDTH.DISPLAY 16295 . 16719) (\STRINGWIDTH.GENERIC +16721 . 22180)) (22183 28703 (DEFAULTFONT 22193 . 23478) (FONTCLASS 23480 . 25642) (FONTCLASSUNPARSE +25644 . 26543) (FONTCLASSCOMPONENT 26545 . 27133) (SETFONTCLASSCOMPONENT 27135 . 27577) ( +GETFONTCLASSCOMPONENT 27579 . 28701)) (30416 54671 (FONTCREATE 30426 . 33671) (FONTCREATE1 33673 . +36288) (FONTCREATE.SLUGFD 36290 . 37772) (\FONT.CHECKARGS 37774 . 44523) (\FONT.CHECKARGS1 44525 . +49048) (\FONTCREATE1.NOFN 49050 . 49264) (FONTFILEP 49266 . 50154) (\READCHARSET 50156 . 54669)) ( +54672 61748 (\FONT.CHECKARGS 54682 . 61431) (\CHARSET.CHECK 61433 . 61746)) (61749 65009 ( +COERCEFONTSPEC 61759 . 65007)) (67079 68418 (MAKEFONTSPEC 67089 . 68416)) (68419 76596 (COMPLETE.FONT +68429 . 70952) (COMPLETEFONTP 70954 . 71577) (COMPLETE.CHARSET 71579 . 74264) (PRUNESLUGCSINFOS 74266 + . 75191) (MONOSPACEFONTP 75193 . 76594)) (76635 84556 (FONTASCENT 76645 . 77029) (FONTDESCENT 77031 + . 77516) (FONTHEIGHT 77518 . 77920) (FONTPROP 77922 . 83833) (\AVGCHARWIDTH 83835 . 84554)) (85213 +86121 (FONTDEVICEPROP 85223 . 86119)) (86167 87021 (EDITCHAR 86177 . 87019)) (87067 99257 ( +GETCHARBITMAP 87077 . 88201) (PUTCHARBITMAP 88203 . 90361) (\GETCHARBITMAP.CSINFO 90363 . 92379) ( +\PUTCHARBITMAP.CSINFO 92381 . 99255)) (99258 119738 (MOVECHARBITMAP 99268 . 101162) (MOVEFONTCHARS +101164 . 105124) (\MOVEFONTCHAR 105126 . 109969) (\MOVEFONTCHARS.SOURCEDATA 109971 . 116076) ( +\MAKESLUGCHAR 116078 . 118613) (SLUGCHARP.DISPLAY 118615 . 119736)) (120671 140809 (FONTFILES 120681 + . 122514) (\FINDFONTFILE 122516 . 124233) (\FONTFILENAMES 124235 . 125230) (\FONTFILENAME 125232 . +129215) (\FONTFILENAME.OLD 129217 . 132166) (\FONTFILENAME.NEW 132168 . 134425) (FONTSPECFROMFILENAME +134427 . 138528) (\FONTINFOFROMFILENAME.OLD 138530 . 140807)) (141076 176879 (FONTCOPY 141086 . 146149 +) (FONTP 146151 . 146450) (FONTUNPARSE 146452 . 148171) (SETFONTDESCRIPTOR 148173 . 149637) ( +\STREAMCHARWIDTH 149639 . 153803) (\COERCECHARSET 153805 . 156400) (\BUILDSLUGCSINFO 156402 . 160025) +(\FONTSYMBOL 160027 . 160677) (\DEVICESYMBOL 160679 . 161548) (\FONTFACE 161550 . 168740) ( +\FONTFACE.COLOR 168742 . 175662) (SETFONTCHARENCODING 175664 . 176877)) (176880 196815 (FONTSAVAILABLE + 176890 . 182244) (FONTEXISTS? 182246 . 186224) (\SEARCHFONTFILES 186226 . 189311) (FLUSHFONTCACHE +189313 . 191172) (FLUSHFONTSINCORE 191174 . 191371) (FINDFONTFILES 191373 . 194587) (SORTFONTSPECS +194589 . 196813)) (196816 200425 (MATCHFONTFACE 196826 . 197641) (MAKEFONTFACE 197643 . 198669) ( +FONTFACETOATOM 198671 . 200423)) (201036 201528 (\UNITWIDTHSVECTOR 201046 . 201526)) (216122 218189 ( +FONTDESCRIPTOR.DEFPRINT 216132 . 217711) (FONTCLASS.DEFPRINT 217713 . 218187)) (222018 224808 ( +\CREATEKERNELEMENT 222028 . 222386) (\FSETLEFTKERN 222388 . 222879) (\FGETLEFTKERN 222881 . 224806)) ( +224809 234445 (\CREATEFONT 224819 . 226258) (\CREATECHARSET 226260 . 230196) (\INSTALLCHARSETINFO +230198 . 233532) (\INSTALLCHARSETINFO.CHARENCODING 233534 . 234443)) (234767 236131 ( +\FONTRESETCHARWIDTHS 234777 . 236129)) (236761 246808 (\CREATEDISPLAYFONT 236771 . 238620) ( +\CREATECHARSET.DISPLAY 238622 . 244331) (\FONTEXISTS?.DISPLAY 244333 . 246806)) (246809 261674 ( +STRIKEFONT.FILEP 246819 . 247707) (STRIKEFONT.GETCHARSET 247709 . 253301) (WRITESTRIKEFONTFILE 253303 + . 258214) (STRIKECSINFO 258216 . 261672)) (261705 278022 (MAKEBOLD.CHARSET 261715 . 265364) ( +MAKEBOLD.CHAR 265366 . 267118) (MAKEITALIC.CHARSET 267120 . 270793) (MAKEITALIC.CHAR 270795 . 273141) +(\SFMAKEBOLD 273143 . 275367) (\SFMAKEITALIC 275369 . 278020)) (278023 282172 (\SFMAKEROTATEDFONT +278033 . 279434) (\SFROTATECSINFO 279436 . 280073) (\SFROTATEFONTCHARACTERS 280075 . 280455) ( +\SFROTATECSINFOOFFSETS 280457 . 282170)) (282173 283554 (\SFMAKECOLOR 282183 . 283552))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index 98ce344aaf2ef4e25885aec7ccea12b2960ab033..ec89184e8301baad879e2b9be05cdb37f24b5211 100644 GIT binary patch delta 14320 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 Wm3xtM4C*f@zlr7XZ0L7SR{lTQmXLV> From 4a1de43ed64199a8d7cdc7403369798fef8e48ba Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 23 Nov 2025 17:21:21 -0800 Subject: [PATCH 3/9] Update FONTCODECHANGES.tedit --- docs/internal/FONTCODECHANGES.tedit | Bin 33911 -> 34686 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/internal/FONTCODECHANGES.tedit b/docs/internal/FONTCODECHANGES.tedit index c92e4098ff42ceaae68b84fe15de2a7222f8738a..2056877d413aa51bc12089041ae7793c259ef1fd 100644 GIT binary patch delta 814 zcmZ8e&ubGw7)|02jEAUA6n1=G4`Ic@7s z+pYo^Kp5skX13Yo<>0 z#0LoKa}l5_%t*UIQTmz@910!`e9TB)cqr%*J^GaR z=}fYU5Kp*Z2P`I$rVfE%HiGu~5l&{|EOvavf7zmNxLCV1HcAZ|vKSd8 zfyzl|_TDA}Dn%5;mHU9ARQ%!TWRa z>&t~~R{k27otEk-$XQh&M6c5)FH}om&Z|O=u~l)3Rg`Z=OL971F0Rabpb9nds_dpq zlg9Jug&UsTa6F@Jxt`H};m^K>;UQ?cI9b-G$!&HVR#?9X^B-qo>*+0m2GLM;w zgk!NnT7HoNSlBVl(bLD#$;VYkp=7e7nK84Tg2HAti^X<~8k0Y?iA_FGc8-a$Y4f7; zrL2<|lyOeBsF4yjW&i?4AZ7zGn1Q%z@`N(U%_?=@IVL-`YYFMOIEJ`dW$p1&U|>jB JWRkDi1pouDF>n9? From fda74e30651ff23ba912e321cfc2b74784fe5201 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 23 Nov 2025 17:21:52 -0800 Subject: [PATCH 4/9] MEDLEYDIR: INITVARS for MEDLEY-INIT-VARS --- sources/MEDLEYDIR | 149 ++++++++++++++++++++++++++++------------- sources/MEDLEYDIR.LCOM | Bin 5856 -> 7841 bytes 2 files changed, 103 insertions(+), 46 deletions(-) diff --git a/sources/MEDLEYDIR b/sources/MEDLEYDIR index 124a06c67..db14c28b2 100644 --- a/sources/MEDLEYDIR +++ b/sources/MEDLEYDIR @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "23-Aug-2025 17:25:03" {DSK}larry>il>medley>sources>MEDLEYDIR.;36 12210 +(FILECREATED "22-Nov-2025 12:26:06" {WMEDLEY}MEDLEYDIR.;36 17284 - :EDIT-BY "lmm" + :EDIT-BY rmk - :CHANGES-TO (FNS MEDLEYDIR) + :CHANGES-TO (VARS MEDLEYDIRCOMS) - :PREVIOUS-DATE "18-Aug-2025 11:19:10" {DSK}larry>il>medley>sources>MEDLEYDIR.;34) + :PREVIOUS-DATE "19-Nov-2025 00:56:15" {WMEDLEY}MEDLEYDIR.;35) (PRETTYCOMPRINT MEDLEYDIRCOMS) @@ -25,7 +25,57 @@ (* ;; "**WARNING** The EVALed expressions get run early in the lodup.") - (VARS MEDLEY-INIT-VARS) + + (* ;; "The INITVARS prevents this from accumulating entries from other files that happen to have been loaded when this is worked on and saved. The loadup scripts set MEDLEY-INIT-VARS to NOBIND to make sure that these are the initial values (as opposed to whatever there was in the startup sysout. But the FONT cache variables have to be specified here, because FONT is in the INIT and the resetting to NOBIND would wipe out these entries even if they were already correct in the init sysout.") + + [INITVARS (MEDLEY-INIT-VARS '((\FONTEXISTS?-CACHE) + (\FONTSAVAILABLEFILECACHE) + [LISPUSERSDIRECTORIES (MEDLEYDIR '("library" "lispusers" + "internal" + "greetfiles" + "doctools"] + [LISPSOURCEDIRECTORIES (MEDLEYDIR '("sources"] + (LISPSOURCEDIRECTORY (CAR LISPSOURCEDIRECTORIES)) + (IRM.HOST&DIR (MEDLEYDIR '"docs/dinfo")) + (IRM.DINFOGRAPH) + (DIRECTORIES (APPEND LISPUSERSDIRECTORIES LISPSOURCEDIRECTORIES + )) + (LOGINHOST/DIR (LET [(LHD (DIRECTORYNAME (OR (UNIX-GETENV + "LOGINDIR") + (UNIX-GETENV + "HOME"] + (AND (GETD 'PSEUDOHOSTS) + (TARGETHOST 'LI) + (PSEUDOHOST 'LI LHD)) + LHD)) + [USERGREETFILES (LIST (CONS LOGINHOST/DIR '("INIT" COM)) + (CONS LOGINHOST/DIR '("INIT"] + (DISPLAYFONTDIRECTORIES (MEDLEYDIR '("fonts/medleydisplayfonts" + "fonts/displayfonts") + NIL NIL T)) + (POSTSCRIPTFONTDIRECTORIES (MEDLEYDIR '("fonts/postscriptfonts" + ) + NIL NIL T)) + (INTERPRESSFONTDIRECTORIES (MEDLEYDIR '("fonts/ipfonts") + NIL NIL T)) + (UNICODEDIRECTORIES (MEDLEYDIR '("unicode/xerox") + NIL NIL T)) + (LOGINHOST/DIR (LET [(LHD (DIRECTORYNAME (OR (UNIX-GETENV + "LOGINDIR") + (UNIX-GETENV + "HOME"] + (AND (GETD 'PSEUDOHOSTS) + (TARGETHOST 'LI) + (PSEUDOHOST 'LI LHD)) + LHD) + RESET) + (USERGREETFILES [LIST (CONS LOGINHOST/DIR '("INIT" COM)) + (CONS LOGINHOST/DIR '("INIT"] + RESET) + (XCL::*WHERE-IS-CASH-FILES* (MEDLEYDIR '("loadups") + "whereis.hash" NIL T)) + (LOADUPSDIRECTORIES (MEDLEYDIR '("loadups") + NIL NIL T] (DECLARE%: EVAL@COMPILE DOCOPY (ADDVARS (GLOBALVARS MEDLEYDIR MEDLEY-INIT-VARS \SAVE.MEDLEYDIR DIRECTORIES SYSOUTCOMMITS]) @@ -201,50 +251,57 @@ (* ;; "**WARNING** The EVALed expressions get run early in the lodup.") -(RPAQQ MEDLEY-INIT-VARS - ((ShellBrowser) - (ShellOpener) - [LISPUSERSDIRECTORIES (MEDLEYDIR '("library" "lispusers" "internal" "greetfiles" "doctools"] - [LISPSOURCEDIRECTORIES (MEDLEYDIR '("sources"] - (LISPSOURCEDIRECTORY (CAR LISPSOURCEDIRECTORIES)) - (IRM.HOST&DIR (MEDLEYDIR '"docs/dinfo")) - (IRM.DINFOGRAPH) - (DIRECTORIES (APPEND LISPUSERSDIRECTORIES LISPSOURCEDIRECTORIES)) - (LOGINHOST/DIR (LET [(LHD (DIRECTORYNAME (OR (UNIX-GETENV "LOGINDIR") - (UNIX-GETENV "HOME"] - (AND (GETD 'PSEUDOHOSTS) - (TARGETHOST 'LI) - (PSEUDOHOST 'LI LHD)) - LHD)) - [USERGREETFILES (LIST (CONS LOGINHOST/DIR '("INIT" COM)) - (CONS LOGINHOST/DIR '("INIT"] - (DISPLAYFONTDIRECTORIES (MEDLEYDIR '("fonts/medleydisplayfonts" "fonts/displayfonts") - NIL NIL T)) - (POSTSCRIPTFONTDIRECTORIES (MEDLEYDIR '("fonts/postscriptfonts") - NIL NIL T)) - (INTERPRESSFONTDIRECTORIES (MEDLEYDIR '("fonts/ipfonts") - NIL NIL T)) - (UNICODEDIRECTORIES (MEDLEYDIR '("unicode/xerox") - NIL NIL T)) - (LOGINHOST/DIR (LET [(LHD (DIRECTORYNAME (OR (UNIX-GETENV "LOGINDIR") - (UNIX-GETENV "HOME"] - (AND (GETD 'PSEUDOHOSTS) - (TARGETHOST 'LI) - (PSEUDOHOST 'LI LHD)) - LHD) - RESET) - (USERGREETFILES [LIST (CONS LOGINHOST/DIR '("INIT" COM)) - (CONS LOGINHOST/DIR '("INIT"] - RESET) - (XCL::*WHERE-IS-CASH-FILES* (MEDLEYDIR '("loadups") - "whereis.hash" NIL T)) - (LOADUPSDIRECTORIES (MEDLEYDIR '("loadups") - NIL NIL T)))) + + +(* ;; +"The INITVARS prevents this from accumulating entries from other files that happen to have been loaded when this is worked on and saved. The loadup scripts set MEDLEY-INIT-VARS to NOBIND to make sure that these are the initial values (as opposed to whatever there was in the startup sysout. But the FONT cache variables have to be specified here, because FONT is in the INIT and the resetting to NOBIND would wipe out these entries even if they were already correct in the init sysout." +) + + +(RPAQ? MEDLEY-INIT-VARS + '((\FONTEXISTS?-CACHE) + (\FONTSAVAILABLEFILECACHE) + [LISPUSERSDIRECTORIES (MEDLEYDIR '("library" "lispusers" "internal" "greetfiles" "doctools"] + [LISPSOURCEDIRECTORIES (MEDLEYDIR '("sources"] + (LISPSOURCEDIRECTORY (CAR LISPSOURCEDIRECTORIES)) + (IRM.HOST&DIR (MEDLEYDIR '"docs/dinfo")) + (IRM.DINFOGRAPH) + (DIRECTORIES (APPEND LISPUSERSDIRECTORIES LISPSOURCEDIRECTORIES)) + (LOGINHOST/DIR (LET [(LHD (DIRECTORYNAME (OR (UNIX-GETENV "LOGINDIR") + (UNIX-GETENV "HOME"] + (AND (GETD 'PSEUDOHOSTS) + (TARGETHOST 'LI) + (PSEUDOHOST 'LI LHD)) + LHD)) + [USERGREETFILES (LIST (CONS LOGINHOST/DIR '("INIT" COM)) + (CONS LOGINHOST/DIR '("INIT"] + (DISPLAYFONTDIRECTORIES (MEDLEYDIR '("fonts/medleydisplayfonts" "fonts/displayfonts") + NIL NIL T)) + (POSTSCRIPTFONTDIRECTORIES (MEDLEYDIR '("fonts/postscriptfonts") + NIL NIL T)) + (INTERPRESSFONTDIRECTORIES (MEDLEYDIR '("fonts/ipfonts") + NIL NIL T)) + (UNICODEDIRECTORIES (MEDLEYDIR '("unicode/xerox") + NIL NIL T)) + (LOGINHOST/DIR (LET [(LHD (DIRECTORYNAME (OR (UNIX-GETENV "LOGINDIR") + (UNIX-GETENV "HOME"] + (AND (GETD 'PSEUDOHOSTS) + (TARGETHOST 'LI) + (PSEUDOHOST 'LI LHD)) + LHD) + RESET) + (USERGREETFILES [LIST (CONS LOGINHOST/DIR '("INIT" COM)) + (CONS LOGINHOST/DIR '("INIT"] + RESET) + (XCL::*WHERE-IS-CASH-FILES* (MEDLEYDIR '("loadups") + "whereis.hash" NIL T)) + (LOADUPSDIRECTORIES (MEDLEYDIR '("loadups") + NIL NIL T)))) (DECLARE%: EVAL@COMPILE DOCOPY (ADDTOVAR GLOBALVARS MEDLEYDIR MEDLEY-INIT-VARS \SAVE.MEDLEYDIR DIRECTORIES SYSOUTCOMMITS) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1675 9578 (MEDLEY-INIT-VARS 1685 . 5163) (MEDLEYDIR 5165 . 8378) (MEDLEYSUBSTDIR 8380 - . 9358) (SET-SYSOUT-COMMIT 9360 . 9576))))) + (FILEMAP (NIL (6186 14089 (MEDLEY-INIT-VARS 6196 . 9674) (MEDLEYDIR 9676 . 12889) (MEDLEYSUBSTDIR +12891 . 13869) (SET-SYSOUT-COMMIT 13871 . 14087))))) STOP diff --git a/sources/MEDLEYDIR.LCOM b/sources/MEDLEYDIR.LCOM index c6e924a0a8b5e7b4f1c8339e1bee00188fed820c..76cc245539576177b221fd5f147d5dbf9fa41875 100644 GIT binary patch delta 1444 zcmbVLO>Y}j6ji8LFlw9FGh@{i(3@#1#--!hPVJ_XLNu`_%_!~|>`9tR-Moxn>LIpg zG#_>&KnAuI0_jQJvEU~l)}a0YkSdleTCwO3$PZw_ePbsLlogU?-S_Uj=bm%!o9EiM z?|r>X)Ry-#nkr*qPzRscaM zFTLz6-PB8Ey;@daH>Ag{^kEQ2mvtEWanBn*01u(ox0+2j*;*_X73h)}N4<(!L0F|A zsOwhKthY_WF&m&%F8n9we{y_KgYu2a@^#S7hUI8$_aGeXgI?b-?AvBXb6TJZ+eW(s zQ(+COU2om#6hQx=ZEjnwt&Y~fX`qyEo={oRt2Mn`{kI=;)$d=-Jv=kH0xK&h!s$`4 zY|BaEgOHBsFpdB%h+r@D2S8jm86_S=Mk5Nl z6c2r$bkVGFk0&@N{>FZ|PbcZJ$gm3$7I%vPoCz;a0*Ktu3y?-ctxRB2~T5*_u06$LXwUb)&vvVrP2UF}4k> zX{~Q{PYxUKa_x~JXzb~9a>_bsv=QC}L{uE{QMaIqw$6qtdkkPPB zESQ;vTJm`MGW#}niT#?*pBA9G(Ln0_pM4^)ptd( PnLUyu*2|q^lN|XQOcJg3 delta 689 zcma)(PiqrV6vZj(W+c`5lY}%$xjvCjkQp+QwAN>xI-PmdA!%mJ#9%gJZ3YvWG-YDZ zBATTx#k&v}3U%o!;K~o+!tYQ-w{H9jKCMVlL3iiyF28%ueft+bX-}_@E1JD~TQke% zA{ghWxkwFzfJ(N8gPndHbz!&-1Rl6y?cqvqIEbuxGfDQWerye*ZXE4dqv39{6^*P7 z=GIxq^_u#H%2EjgVwR`KRce~FQXz2bJ2+nGLZ5T(AQ*=*J*ewCf$rvAzW6VIszFME zy6)AP(`0swxqRr4{AIr7|MQLy1A}3jMj0q`y_UAt;ql|afBx~e8 zwJZS*nyl^l*Fw$ZQGgiBQ+*9;oTo;afbfqf;_tVszWp$BKXs&SH}UhV%)i2APTg*@ zGZX~Yw(FN1euP;QNZKb6x#DQzX85d!xR7j From 7ab6c2ec6f1f26296595f839a87047cd0b50f4be Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 23 Nov 2025 22:06:49 -0800 Subject: [PATCH 5/9] Make FONTEXISTS and FONTSAVAILABLE consistent FONTSAVAILABLE was allowing the absence of a face in a filename to map to (MEDIUM REGULAR REGULAR). FONTEXISTS/FONTCREATE don't do that, nor does the Venue sysout. --- sources/FONT | 101 +++++++++++++++++++++++++--------------------- sources/FONT.LCOM | Bin 63712 -> 63778 bytes 2 files changed, 54 insertions(+), 47 deletions(-) diff --git a/sources/FONT b/sources/FONT index 2a14ba251..9e982fdd6 100644 --- a/sources/FONT +++ b/sources/FONT @@ -1,10 +1,10 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "22-Nov-2025 15:52:25" {WMEDLEY}FONT.;632 286550 +(FILECREATED "23-Nov-2025 21:42:37" {WMEDLEY}FONT.;633 287006 :EDIT-BY rmk - :CHANGES-TO (FNS FLUSHFONTCACHE) + :CHANGES-TO (FNS FONTSPECFROMFILENAME FLUSHFONTCACHE) :PREVIOUS-DATE "22-Nov-2025 13:50:59" {WMEDLEY}FONT.;631) @@ -2110,7 +2110,8 @@ 'EXTENSION EXTENSION]) (FONTSPECFROMFILENAME - [LAMBDA (FONTFILE DEVICE) (* ; "Edited 30-Aug-2025 10:05 by rmk") + [LAMBDA (FONTFILE DEVICE) (* ; "Edited 23-Nov-2025 21:42 by rmk") + (* ; "Edited 30-Aug-2025 10:05 by rmk") (* ; "Edited 28-Aug-2025 14:28 by rmk") (* ; "Edited 25-Aug-2025 10:16 by rmk") (* ; "Edited 23-Aug-2025 10:42 by rmk") @@ -2146,17 +2147,23 @@ (SETQ NAME (U-CASE NAME)) (SETQ FACE (SUBSTRING NAME SIZEEND)) (* ;  "don't need name, but checks for lowercase face") - [SETQ FACE (LIST (SELCHARQ (NTHCHARCODE FACE 1) + (SETQ FACE (LIST (SELCHARQ (NTHCHARCODE FACE 1) (B 'BOLD) (L 'LIGHT) - 'MEDIUM) + (M 'MEDIUM) + NIL) (SELCHARQ (NTHCHARCODE FACE 2) (I 'ITALIC) - 'REGULAR) + (R 'REGULAR) + NIL) (SELCHARQ (NTHCHARCODE FACE 3) (C 'COMPRESSED) (E 'EXPANDED) - 'REGULAR] + (R 'REGULAR) + NIL))) + (CL:WHEN (MEMB NIL FACE) (* ; + "Named didn't have a recognizable face") + (SETQ FACE NIL)) (CL:WHEN (SETQ CHARSET (STRPOS "-c" NAME NIL NIL NIL T UPPERCASEARRAY)) [SETQ CHARSET (FIXP (MKATOM (CONCAT (SUBSTRING NAME CHARSET) "Q"]) @@ -4682,44 +4689,44 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12469 22182 (CHARWIDTH 12479 . 13264) (CHARWIDTHY 13266 . 14783) (STRINGWIDTH 14785 . -15878) (\CHARWIDTH.DISPLAY 15880 . 16293) (\STRINGWIDTH.DISPLAY 16295 . 16719) (\STRINGWIDTH.GENERIC -16721 . 22180)) (22183 28703 (DEFAULTFONT 22193 . 23478) (FONTCLASS 23480 . 25642) (FONTCLASSUNPARSE -25644 . 26543) (FONTCLASSCOMPONENT 26545 . 27133) (SETFONTCLASSCOMPONENT 27135 . 27577) ( -GETFONTCLASSCOMPONENT 27579 . 28701)) (30416 54671 (FONTCREATE 30426 . 33671) (FONTCREATE1 33673 . -36288) (FONTCREATE.SLUGFD 36290 . 37772) (\FONT.CHECKARGS 37774 . 44523) (\FONT.CHECKARGS1 44525 . -49048) (\FONTCREATE1.NOFN 49050 . 49264) (FONTFILEP 49266 . 50154) (\READCHARSET 50156 . 54669)) ( -54672 61748 (\FONT.CHECKARGS 54682 . 61431) (\CHARSET.CHECK 61433 . 61746)) (61749 65009 ( -COERCEFONTSPEC 61759 . 65007)) (67079 68418 (MAKEFONTSPEC 67089 . 68416)) (68419 76596 (COMPLETE.FONT -68429 . 70952) (COMPLETEFONTP 70954 . 71577) (COMPLETE.CHARSET 71579 . 74264) (PRUNESLUGCSINFOS 74266 - . 75191) (MONOSPACEFONTP 75193 . 76594)) (76635 84556 (FONTASCENT 76645 . 77029) (FONTDESCENT 77031 - . 77516) (FONTHEIGHT 77518 . 77920) (FONTPROP 77922 . 83833) (\AVGCHARWIDTH 83835 . 84554)) (85213 -86121 (FONTDEVICEPROP 85223 . 86119)) (86167 87021 (EDITCHAR 86177 . 87019)) (87067 99257 ( -GETCHARBITMAP 87077 . 88201) (PUTCHARBITMAP 88203 . 90361) (\GETCHARBITMAP.CSINFO 90363 . 92379) ( -\PUTCHARBITMAP.CSINFO 92381 . 99255)) (99258 119738 (MOVECHARBITMAP 99268 . 101162) (MOVEFONTCHARS -101164 . 105124) (\MOVEFONTCHAR 105126 . 109969) (\MOVEFONTCHARS.SOURCEDATA 109971 . 116076) ( -\MAKESLUGCHAR 116078 . 118613) (SLUGCHARP.DISPLAY 118615 . 119736)) (120671 140809 (FONTFILES 120681 - . 122514) (\FINDFONTFILE 122516 . 124233) (\FONTFILENAMES 124235 . 125230) (\FONTFILENAME 125232 . -129215) (\FONTFILENAME.OLD 129217 . 132166) (\FONTFILENAME.NEW 132168 . 134425) (FONTSPECFROMFILENAME -134427 . 138528) (\FONTINFOFROMFILENAME.OLD 138530 . 140807)) (141076 176879 (FONTCOPY 141086 . 146149 -) (FONTP 146151 . 146450) (FONTUNPARSE 146452 . 148171) (SETFONTDESCRIPTOR 148173 . 149637) ( -\STREAMCHARWIDTH 149639 . 153803) (\COERCECHARSET 153805 . 156400) (\BUILDSLUGCSINFO 156402 . 160025) -(\FONTSYMBOL 160027 . 160677) (\DEVICESYMBOL 160679 . 161548) (\FONTFACE 161550 . 168740) ( -\FONTFACE.COLOR 168742 . 175662) (SETFONTCHARENCODING 175664 . 176877)) (176880 196815 (FONTSAVAILABLE - 176890 . 182244) (FONTEXISTS? 182246 . 186224) (\SEARCHFONTFILES 186226 . 189311) (FLUSHFONTCACHE -189313 . 191172) (FLUSHFONTSINCORE 191174 . 191371) (FINDFONTFILES 191373 . 194587) (SORTFONTSPECS -194589 . 196813)) (196816 200425 (MATCHFONTFACE 196826 . 197641) (MAKEFONTFACE 197643 . 198669) ( -FONTFACETOATOM 198671 . 200423)) (201036 201528 (\UNITWIDTHSVECTOR 201046 . 201526)) (216122 218189 ( -FONTDESCRIPTOR.DEFPRINT 216132 . 217711) (FONTCLASS.DEFPRINT 217713 . 218187)) (222018 224808 ( -\CREATEKERNELEMENT 222028 . 222386) (\FSETLEFTKERN 222388 . 222879) (\FGETLEFTKERN 222881 . 224806)) ( -224809 234445 (\CREATEFONT 224819 . 226258) (\CREATECHARSET 226260 . 230196) (\INSTALLCHARSETINFO -230198 . 233532) (\INSTALLCHARSETINFO.CHARENCODING 233534 . 234443)) (234767 236131 ( -\FONTRESETCHARWIDTHS 234777 . 236129)) (236761 246808 (\CREATEDISPLAYFONT 236771 . 238620) ( -\CREATECHARSET.DISPLAY 238622 . 244331) (\FONTEXISTS?.DISPLAY 244333 . 246806)) (246809 261674 ( -STRIKEFONT.FILEP 246819 . 247707) (STRIKEFONT.GETCHARSET 247709 . 253301) (WRITESTRIKEFONTFILE 253303 - . 258214) (STRIKECSINFO 258216 . 261672)) (261705 278022 (MAKEBOLD.CHARSET 261715 . 265364) ( -MAKEBOLD.CHAR 265366 . 267118) (MAKEITALIC.CHARSET 267120 . 270793) (MAKEITALIC.CHAR 270795 . 273141) -(\SFMAKEBOLD 273143 . 275367) (\SFMAKEITALIC 275369 . 278020)) (278023 282172 (\SFMAKEROTATEDFONT -278033 . 279434) (\SFROTATECSINFO 279436 . 280073) (\SFROTATEFONTCHARACTERS 280075 . 280455) ( -\SFROTATECSINFOOFFSETS 280457 . 282170)) (282173 283554 (\SFMAKECOLOR 282183 . 283552))))) + (FILEMAP (NIL (12490 22203 (CHARWIDTH 12500 . 13285) (CHARWIDTHY 13287 . 14804) (STRINGWIDTH 14806 . +15899) (\CHARWIDTH.DISPLAY 15901 . 16314) (\STRINGWIDTH.DISPLAY 16316 . 16740) (\STRINGWIDTH.GENERIC +16742 . 22201)) (22204 28724 (DEFAULTFONT 22214 . 23499) (FONTCLASS 23501 . 25663) (FONTCLASSUNPARSE +25665 . 26564) (FONTCLASSCOMPONENT 26566 . 27154) (SETFONTCLASSCOMPONENT 27156 . 27598) ( +GETFONTCLASSCOMPONENT 27600 . 28722)) (30437 54692 (FONTCREATE 30447 . 33692) (FONTCREATE1 33694 . +36309) (FONTCREATE.SLUGFD 36311 . 37793) (\FONT.CHECKARGS 37795 . 44544) (\FONT.CHECKARGS1 44546 . +49069) (\FONTCREATE1.NOFN 49071 . 49285) (FONTFILEP 49287 . 50175) (\READCHARSET 50177 . 54690)) ( +54693 61769 (\FONT.CHECKARGS 54703 . 61452) (\CHARSET.CHECK 61454 . 61767)) (61770 65030 ( +COERCEFONTSPEC 61780 . 65028)) (67100 68439 (MAKEFONTSPEC 67110 . 68437)) (68440 76617 (COMPLETE.FONT +68450 . 70973) (COMPLETEFONTP 70975 . 71598) (COMPLETE.CHARSET 71600 . 74285) (PRUNESLUGCSINFOS 74287 + . 75212) (MONOSPACEFONTP 75214 . 76615)) (76656 84577 (FONTASCENT 76666 . 77050) (FONTDESCENT 77052 + . 77537) (FONTHEIGHT 77539 . 77941) (FONTPROP 77943 . 83854) (\AVGCHARWIDTH 83856 . 84575)) (85234 +86142 (FONTDEVICEPROP 85244 . 86140)) (86188 87042 (EDITCHAR 86198 . 87040)) (87088 99278 ( +GETCHARBITMAP 87098 . 88222) (PUTCHARBITMAP 88224 . 90382) (\GETCHARBITMAP.CSINFO 90384 . 92400) ( +\PUTCHARBITMAP.CSINFO 92402 . 99276)) (99279 119759 (MOVECHARBITMAP 99289 . 101183) (MOVEFONTCHARS +101185 . 105145) (\MOVEFONTCHAR 105147 . 109990) (\MOVEFONTCHARS.SOURCEDATA 109992 . 116097) ( +\MAKESLUGCHAR 116099 . 118634) (SLUGCHARP.DISPLAY 118636 . 119757)) (120692 141265 (FONTFILES 120702 + . 122535) (\FINDFONTFILE 122537 . 124254) (\FONTFILENAMES 124256 . 125251) (\FONTFILENAME 125253 . +129236) (\FONTFILENAME.OLD 129238 . 132187) (\FONTFILENAME.NEW 132189 . 134446) (FONTSPECFROMFILENAME +134448 . 138984) (\FONTINFOFROMFILENAME.OLD 138986 . 141263)) (141532 177335 (FONTCOPY 141542 . 146605 +) (FONTP 146607 . 146906) (FONTUNPARSE 146908 . 148627) (SETFONTDESCRIPTOR 148629 . 150093) ( +\STREAMCHARWIDTH 150095 . 154259) (\COERCECHARSET 154261 . 156856) (\BUILDSLUGCSINFO 156858 . 160481) +(\FONTSYMBOL 160483 . 161133) (\DEVICESYMBOL 161135 . 162004) (\FONTFACE 162006 . 169196) ( +\FONTFACE.COLOR 169198 . 176118) (SETFONTCHARENCODING 176120 . 177333)) (177336 197271 (FONTSAVAILABLE + 177346 . 182700) (FONTEXISTS? 182702 . 186680) (\SEARCHFONTFILES 186682 . 189767) (FLUSHFONTCACHE +189769 . 191628) (FLUSHFONTSINCORE 191630 . 191827) (FINDFONTFILES 191829 . 195043) (SORTFONTSPECS +195045 . 197269)) (197272 200881 (MATCHFONTFACE 197282 . 198097) (MAKEFONTFACE 198099 . 199125) ( +FONTFACETOATOM 199127 . 200879)) (201492 201984 (\UNITWIDTHSVECTOR 201502 . 201982)) (216578 218645 ( +FONTDESCRIPTOR.DEFPRINT 216588 . 218167) (FONTCLASS.DEFPRINT 218169 . 218643)) (222474 225264 ( +\CREATEKERNELEMENT 222484 . 222842) (\FSETLEFTKERN 222844 . 223335) (\FGETLEFTKERN 223337 . 225262)) ( +225265 234901 (\CREATEFONT 225275 . 226714) (\CREATECHARSET 226716 . 230652) (\INSTALLCHARSETINFO +230654 . 233988) (\INSTALLCHARSETINFO.CHARENCODING 233990 . 234899)) (235223 236587 ( +\FONTRESETCHARWIDTHS 235233 . 236585)) (237217 247264 (\CREATEDISPLAYFONT 237227 . 239076) ( +\CREATECHARSET.DISPLAY 239078 . 244787) (\FONTEXISTS?.DISPLAY 244789 . 247262)) (247265 262130 ( +STRIKEFONT.FILEP 247275 . 248163) (STRIKEFONT.GETCHARSET 248165 . 253757) (WRITESTRIKEFONTFILE 253759 + . 258670) (STRIKECSINFO 258672 . 262128)) (262161 278478 (MAKEBOLD.CHARSET 262171 . 265820) ( +MAKEBOLD.CHAR 265822 . 267574) (MAKEITALIC.CHARSET 267576 . 271249) (MAKEITALIC.CHAR 271251 . 273597) +(\SFMAKEBOLD 273599 . 275823) (\SFMAKEITALIC 275825 . 278476)) (278479 282628 (\SFMAKEROTATEDFONT +278489 . 279890) (\SFROTATECSINFO 279892 . 280529) (\SFROTATEFONTCHARACTERS 280531 . 280911) ( +\SFROTATECSINFOOFFSETS 280913 . 282626)) (282629 284010 (\SFMAKECOLOR 282639 . 284008))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index ec89184e8301baad879e2b9be05cdb37f24b5211..93fa68caa45cf198376fd226fa8c85551020072d 100644 GIT binary patch delta 573 zcmZvZ!D|#T7{whItn6VAT1A$kU*{&cGL!6VW_mI^6SsqtWHy;ux*$|=!G#Vif_QYR z^y1ALP%mDjM-P>H@5%qblPCX#)r(g%Td^X|DKEe8y*!fdKN=r?HePLA#vL(x+Cd%) z0QnnTw1LU~&MgP;zk7TZGi%P;MGPn;p4T&XoOR>wu9^qV&}klhat@w3zszX&V18Y$ z?tDFbKdG|Co8w34?0Q-8#pjjfR<^41&H8LorKec^gByQvym))!KD;)m*cr3acDudZ zn#$JFV5ZxxwN5p)2@o^r8%L;6(U_z%-Xu!Py{z_XY`oEA(jR=%^&Qwe_qe{^+ zpdJRr24zMSpa9u~oQi}cfN*4M@?0^kYw1U)b6$8A(t>7b48ASGS(26QvmxMHFjLQ@Oe?ZEVX;g=Nf|4)r=?sRLOfk%xdGlt5x%^xE{ipW6{|KAOtCJ=Y z^R+7fBA3%o-z)AYSO0L1>h=1;Qt|Hm*D3R1|CvrwH;8w1 z1TEr&OKq5RpQ_zVM8LQYvwEQRLaB_^1{mcK#-giAq7rdBFbWviob{E^0CqUU&qb=^ zG9(~%B1Kx>N5Ew}x8i{9YK~df4v@AWNqe#d From b6d53842f3563d7e6e0506018554c3bc968649c7 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Thu, 27 Nov 2025 00:03:54 -0800 Subject: [PATCH 6/9] Updates to deal with MEDLEY-INIT-VARS RESET --- docs/internal/FONTCODECHANGES.tedit | Bin 34686 -> 34687 bytes library/UNIXUTILS | 20 +++--- library/UNIXUTILS.DFASL | Bin 7320 -> 7342 bytes sources/FONT | 94 ++++++++++++++-------------- sources/FONT.LCOM | Bin 63778 -> 70581 bytes sources/MEDLEYDIR | 50 +++++---------- sources/MEDLEYDIR.LCOM | Bin 7841 -> 7295 bytes 7 files changed, 73 insertions(+), 91 deletions(-) diff --git a/docs/internal/FONTCODECHANGES.tedit b/docs/internal/FONTCODECHANGES.tedit index 2056877d413aa51bc12089041ae7793c259ef1fd..028503b757b5df434a0833b435d97d6025087f15 100644 GIT binary patch delta 65 zcmV-H0KWhJjspLV0GzRFgi3 XE)rKnK~zOLYVYpi003!V0x^2JiH{l5 delta 65 zcmV-H0KWhKjspIU0UNIXUTILS.;34 18037 +(FILECREATED "26-Nov-2025 14:21:13" {WMEDLEY}UNIXUTILS.;35 18084 :EDIT-BY rmk - :CHANGES-TO (FNS SLASHIT) + :CHANGES-TO (VARS UNIXUTILSCOMS) - :PREVIOUS-DATE "22-Oct-2025 13:05:51" {WMEDLEY}UNIXUTILS.;33) + :PREVIOUS-DATE " 4-Nov-2025 10:11:10" {WMEDLEY}UNIXUTILS.;34) (PRETTYCOMPRINT UNIXUTILSCOMS) @@ -19,8 +19,8 @@ (INITVARS (ShellBrowser) (ShellOpener)) (FUNCTIONS ShellCommand ShellWhich) - (ADDVARS (MEDLEY-INIT-VARS (ShellBrowser) - (ShellOpener))) + (ADDVARS (MEDLEY-INIT-VARS (ShellBrowser NIL RESET) + (ShellOpener NIL RESET))) (FNS ShellBrowser ShellBrowse ShellOpener ShellOpen PROCESS-COMMAND SLASHIT UNIX-FILE-NAME) (PROPS (UNIXUTILS FILETYPE)))) (DECLARE%: EVAL@COMPILE DONTCOPY @@ -57,8 +57,8 @@ (T (SETFILEPTR S 0) (RSTRING S]) -(ADDTOVAR MEDLEY-INIT-VARS (ShellBrowser) - (ShellOpener)) +(ADDTOVAR MEDLEY-INIT-VARS (ShellBrowser NIL RESET) + (ShellOpener NIL RESET)) (DEFINEQ (ShellBrowser @@ -327,7 +327,7 @@ (PUTPROPS UNIXUTILS FILETYPE CL:COMPILE-FILE) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1110 1483 (ShellCommand 1110 . 1483)) (1485 1882 (ShellWhich 1485 . 1882)) (1972 17959 -(ShellBrowser 1982 . 3754) (ShellBrowse 3756 . 4441) (ShellOpener 4443 . 6131) (ShellOpen 6133 . 11612 -) (PROCESS-COMMAND 11614 . 12227) (SLASHIT 12229 . 14684) (UNIX-FILE-NAME 14686 . 17957))))) + (FILEMAP (NIL (1137 1510 (ShellCommand 1137 . 1510)) (1512 1909 (ShellWhich 1512 . 1909)) (2019 18006 +(ShellBrowser 2029 . 3801) (ShellBrowse 3803 . 4488) (ShellOpener 4490 . 6178) (ShellOpen 6180 . 11659 +) (PROCESS-COMMAND 11661 . 12274) (SLASHIT 12276 . 14731) (UNIX-FILE-NAME 14733 . 18004))))) STOP diff --git a/library/UNIXUTILS.DFASL b/library/UNIXUTILS.DFASL index 514dfbb9e910309c2eab26709c74b23000c0916f..96e1669b9f37fa0ae01eba23b9c1f68c725ae4e6 100644 GIT binary patch delta 1832 zcmZuyZ%kWN6uy1G%0P#mThh_T{0U5 z)Gx!DF>grTZAgsK2qtFEluSjLF+uue$@a-lMq?JgnwZTG>W6vmy@-yHH20kIyXSY# zxwq%sX9TVWmem=*O+WkUTsrHXJ$X9oPS0giuVgcB?|?@;d%@%F_4?g?zCmx_U|+v& zRMDdkx=m&?FJ;eXQWtxG;RZ(b%uII9&1gNly#B!FAN?XZWa?ZnR`TWvRaX-Rk!iyM z^^tew#m0kDt>oLUbhTlBF=Ps3Z`^nzN6Q77B)L^2U#!U!eV>xdLMq_$% zLNy3xzq}mw`^c6#h;@R?ly*oaaC{zHAW)?i(>&2wP>FiNF&ZbSvII_$>t*dYO@1i5 zW7jc+rF$%hHb8D#-f+zVjyS%6E9nVrq9+lOI%pcxQzYQ>k%G0pnw^sR_Kvq<{l=Di zmi8*N*H3fgwek!eBtMtWxCbScL(Zh%N{2|w=5iWc9H9;_j9Ot4 zVk_7$(FTZsc!UMPBS$M@c&NBsaZZxFULsY0fj=Xg)lln3ARq1q7Xyn0PW|(cv4s{ zVKoY?oQs0g#_F9=v=H=jErgW%=*uARuYCU+`MY+&bBzI;9N1=Rk*nV`^%Jh{Fm+g{ zON$UfBUy*?=)K(&-i11) zeRT#T51gpv@OIwYE#)pfpcKebL7|e7V!N{kr$;OZ$-6UW5;KRbEG@S1Rowd0Vl}($ zZP7C~cv-Af(Yini{~=en%9p%A$<@Zg)~WzAa25Hj(b-}knUOy<@(6BPns&njgVW68w7bB+pvxB|F2 z5>gVJ0Mo>r#Y;q=7j%+pne5WD&(KUi(T;7a!HGGmBw6GK3)MqGf92s1Ge`Oz3iG(`UZ&>!>{Jomnh$yoBzbI#|U z^Ev0-o_p_ws1co&UkX=flhaesodymxe2c~>{lj_`a^+G#2XC6g27lY zP_ZYWr5|Znoludmm(DP; zi%v4(gAPWj+i{%at2=_r0O7OT0Wa{NOAIMMwYHS9CzX~n%zoGOn4)p=OSPx*1BPkb z{W4RZ(QWkxMzjMc=BvntRn?#c+z6|R28)URnh6X)qpCYE?M zbdr$JHB5jjyXa80ny#)l#a$mfU=a(^$E>0x0^I ztBeudHBs_K?WN$NC~~VLTDV*i%eefMW(CWJx!r9$MyCm_i`j0r(Vfk(rN7oiT#Mkz z{{89(^QTgDb>H)(PC z!hwi@piv>CAtptsKS{eGXyfev#Tg5Epy(&ZT#2psS3A51bqbHx*%c7{(9s=NsN?=> zDfj3mr9c)3g-YV3NP`a_kJ}IuSC5>1e+_K8tMI$R4QUbx2aTWEpyl)_Ct7^`HeIat1e1fK0GIp4fRbSO)lmOh#$QtxDV?VHa*S~{{yqpy^|kC^Kvm> zu`n2iGH!3zEN$Q zESABm(W{tr9pp~SldU=EbnQCF@GLm8G8}UAje%F8)f0gCK=sJ(XCb^&Qu{M-vH97a Mpn0})&pdeWAI#qvZ2$lO diff --git a/sources/FONT b/sources/FONT index 9e982fdd6..5a3a141eb 100644 --- a/sources/FONT +++ b/sources/FONT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "23-Nov-2025 21:42:37" {WMEDLEY}FONT.;633 287006 +(FILECREATED "26-Nov-2025 14:22:51" {WMEDLEY}FONT.;634 287020 :EDIT-BY rmk - :CHANGES-TO (FNS FONTSPECFROMFILENAME FLUSHFONTCACHE) + :CHANGES-TO (VARS FONTCOMS) - :PREVIOUS-DATE "22-Nov-2025 13:50:59" {WMEDLEY}FONT.;631) + :PREVIOUS-DATE "23-Nov-2025 21:42:37" {WMEDLEY}FONT.;633) (PRETTYCOMPRINT FONTCOMS) @@ -70,8 +70,8 @@ (* ;; "The INITVARS value of MEDLEY-INIT-VARS in MEDLEY dalso includes these entries. That's because FONT is in the INIT, so these entries would be lost when MEDLEY-INIT-VARS is reinitialized when the Lisp loadup starts") - (ADDVARS (MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE) - (\FONTSAVAILABLEFILECACHE))) + (ADDVARS (MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE NIL RESET) + (\FONTSAVAILABLEFILECACHE NIL RESET))) [COMS (GLOBALVARS \DEFAULTDEVICEFONTS \UNITWIDTHSVECTOR) (INITVARS \UNITWIDTHSVECTOR) (FNS \UNITWIDTHSVECTOR) @@ -3205,8 +3205,8 @@ ) -(ADDTOVAR MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE) - (\FONTSAVAILABLEFILECACHE)) +(ADDTOVAR MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE NIL RESET) + (\FONTSAVAILABLEFILECACHE NIL RESET)) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS \DEFAULTDEVICEFONTS \UNITWIDTHSVECTOR) @@ -4689,44 +4689,44 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12490 22203 (CHARWIDTH 12500 . 13285) (CHARWIDTHY 13287 . 14804) (STRINGWIDTH 14806 . -15899) (\CHARWIDTH.DISPLAY 15901 . 16314) (\STRINGWIDTH.DISPLAY 16316 . 16740) (\STRINGWIDTH.GENERIC -16742 . 22201)) (22204 28724 (DEFAULTFONT 22214 . 23499) (FONTCLASS 23501 . 25663) (FONTCLASSUNPARSE -25665 . 26564) (FONTCLASSCOMPONENT 26566 . 27154) (SETFONTCLASSCOMPONENT 27156 . 27598) ( -GETFONTCLASSCOMPONENT 27600 . 28722)) (30437 54692 (FONTCREATE 30447 . 33692) (FONTCREATE1 33694 . -36309) (FONTCREATE.SLUGFD 36311 . 37793) (\FONT.CHECKARGS 37795 . 44544) (\FONT.CHECKARGS1 44546 . -49069) (\FONTCREATE1.NOFN 49071 . 49285) (FONTFILEP 49287 . 50175) (\READCHARSET 50177 . 54690)) ( -54693 61769 (\FONT.CHECKARGS 54703 . 61452) (\CHARSET.CHECK 61454 . 61767)) (61770 65030 ( -COERCEFONTSPEC 61780 . 65028)) (67100 68439 (MAKEFONTSPEC 67110 . 68437)) (68440 76617 (COMPLETE.FONT -68450 . 70973) (COMPLETEFONTP 70975 . 71598) (COMPLETE.CHARSET 71600 . 74285) (PRUNESLUGCSINFOS 74287 - . 75212) (MONOSPACEFONTP 75214 . 76615)) (76656 84577 (FONTASCENT 76666 . 77050) (FONTDESCENT 77052 - . 77537) (FONTHEIGHT 77539 . 77941) (FONTPROP 77943 . 83854) (\AVGCHARWIDTH 83856 . 84575)) (85234 -86142 (FONTDEVICEPROP 85244 . 86140)) (86188 87042 (EDITCHAR 86198 . 87040)) (87088 99278 ( -GETCHARBITMAP 87098 . 88222) (PUTCHARBITMAP 88224 . 90382) (\GETCHARBITMAP.CSINFO 90384 . 92400) ( -\PUTCHARBITMAP.CSINFO 92402 . 99276)) (99279 119759 (MOVECHARBITMAP 99289 . 101183) (MOVEFONTCHARS -101185 . 105145) (\MOVEFONTCHAR 105147 . 109990) (\MOVEFONTCHARS.SOURCEDATA 109992 . 116097) ( -\MAKESLUGCHAR 116099 . 118634) (SLUGCHARP.DISPLAY 118636 . 119757)) (120692 141265 (FONTFILES 120702 - . 122535) (\FINDFONTFILE 122537 . 124254) (\FONTFILENAMES 124256 . 125251) (\FONTFILENAME 125253 . -129236) (\FONTFILENAME.OLD 129238 . 132187) (\FONTFILENAME.NEW 132189 . 134446) (FONTSPECFROMFILENAME -134448 . 138984) (\FONTINFOFROMFILENAME.OLD 138986 . 141263)) (141532 177335 (FONTCOPY 141542 . 146605 -) (FONTP 146607 . 146906) (FONTUNPARSE 146908 . 148627) (SETFONTDESCRIPTOR 148629 . 150093) ( -\STREAMCHARWIDTH 150095 . 154259) (\COERCECHARSET 154261 . 156856) (\BUILDSLUGCSINFO 156858 . 160481) -(\FONTSYMBOL 160483 . 161133) (\DEVICESYMBOL 161135 . 162004) (\FONTFACE 162006 . 169196) ( -\FONTFACE.COLOR 169198 . 176118) (SETFONTCHARENCODING 176120 . 177333)) (177336 197271 (FONTSAVAILABLE - 177346 . 182700) (FONTEXISTS? 182702 . 186680) (\SEARCHFONTFILES 186682 . 189767) (FLUSHFONTCACHE -189769 . 191628) (FLUSHFONTSINCORE 191630 . 191827) (FINDFONTFILES 191829 . 195043) (SORTFONTSPECS -195045 . 197269)) (197272 200881 (MATCHFONTFACE 197282 . 198097) (MAKEFONTFACE 198099 . 199125) ( -FONTFACETOATOM 199127 . 200879)) (201492 201984 (\UNITWIDTHSVECTOR 201502 . 201982)) (216578 218645 ( -FONTDESCRIPTOR.DEFPRINT 216588 . 218167) (FONTCLASS.DEFPRINT 218169 . 218643)) (222474 225264 ( -\CREATEKERNELEMENT 222484 . 222842) (\FSETLEFTKERN 222844 . 223335) (\FGETLEFTKERN 223337 . 225262)) ( -225265 234901 (\CREATEFONT 225275 . 226714) (\CREATECHARSET 226716 . 230652) (\INSTALLCHARSETINFO -230654 . 233988) (\INSTALLCHARSETINFO.CHARENCODING 233990 . 234899)) (235223 236587 ( -\FONTRESETCHARWIDTHS 235233 . 236585)) (237217 247264 (\CREATEDISPLAYFONT 237227 . 239076) ( -\CREATECHARSET.DISPLAY 239078 . 244787) (\FONTEXISTS?.DISPLAY 244789 . 247262)) (247265 262130 ( -STRIKEFONT.FILEP 247275 . 248163) (STRIKEFONT.GETCHARSET 248165 . 253757) (WRITESTRIKEFONTFILE 253759 - . 258670) (STRIKECSINFO 258672 . 262128)) (262161 278478 (MAKEBOLD.CHARSET 262171 . 265820) ( -MAKEBOLD.CHAR 265822 . 267574) (MAKEITALIC.CHARSET 267576 . 271249) (MAKEITALIC.CHAR 271251 . 273597) -(\SFMAKEBOLD 273599 . 275823) (\SFMAKEITALIC 275825 . 278476)) (278479 282628 (\SFMAKEROTATEDFONT -278489 . 279890) (\SFROTATECSINFO 279892 . 280529) (\SFROTATEFONTCHARACTERS 280531 . 280911) ( -\SFROTATECSINFOOFFSETS 280913 . 282626)) (282629 284010 (\SFMAKECOLOR 282639 . 284008))))) + (FILEMAP (NIL (12484 22197 (CHARWIDTH 12494 . 13279) (CHARWIDTHY 13281 . 14798) (STRINGWIDTH 14800 . +15893) (\CHARWIDTH.DISPLAY 15895 . 16308) (\STRINGWIDTH.DISPLAY 16310 . 16734) (\STRINGWIDTH.GENERIC +16736 . 22195)) (22198 28718 (DEFAULTFONT 22208 . 23493) (FONTCLASS 23495 . 25657) (FONTCLASSUNPARSE +25659 . 26558) (FONTCLASSCOMPONENT 26560 . 27148) (SETFONTCLASSCOMPONENT 27150 . 27592) ( +GETFONTCLASSCOMPONENT 27594 . 28716)) (30431 54686 (FONTCREATE 30441 . 33686) (FONTCREATE1 33688 . +36303) (FONTCREATE.SLUGFD 36305 . 37787) (\FONT.CHECKARGS 37789 . 44538) (\FONT.CHECKARGS1 44540 . +49063) (\FONTCREATE1.NOFN 49065 . 49279) (FONTFILEP 49281 . 50169) (\READCHARSET 50171 . 54684)) ( +54687 61763 (\FONT.CHECKARGS 54697 . 61446) (\CHARSET.CHECK 61448 . 61761)) (61764 65024 ( +COERCEFONTSPEC 61774 . 65022)) (67094 68433 (MAKEFONTSPEC 67104 . 68431)) (68434 76611 (COMPLETE.FONT +68444 . 70967) (COMPLETEFONTP 70969 . 71592) (COMPLETE.CHARSET 71594 . 74279) (PRUNESLUGCSINFOS 74281 + . 75206) (MONOSPACEFONTP 75208 . 76609)) (76650 84571 (FONTASCENT 76660 . 77044) (FONTDESCENT 77046 + . 77531) (FONTHEIGHT 77533 . 77935) (FONTPROP 77937 . 83848) (\AVGCHARWIDTH 83850 . 84569)) (85228 +86136 (FONTDEVICEPROP 85238 . 86134)) (86182 87036 (EDITCHAR 86192 . 87034)) (87082 99272 ( +GETCHARBITMAP 87092 . 88216) (PUTCHARBITMAP 88218 . 90376) (\GETCHARBITMAP.CSINFO 90378 . 92394) ( +\PUTCHARBITMAP.CSINFO 92396 . 99270)) (99273 119753 (MOVECHARBITMAP 99283 . 101177) (MOVEFONTCHARS +101179 . 105139) (\MOVEFONTCHAR 105141 . 109984) (\MOVEFONTCHARS.SOURCEDATA 109986 . 116091) ( +\MAKESLUGCHAR 116093 . 118628) (SLUGCHARP.DISPLAY 118630 . 119751)) (120686 141259 (FONTFILES 120696 + . 122529) (\FINDFONTFILE 122531 . 124248) (\FONTFILENAMES 124250 . 125245) (\FONTFILENAME 125247 . +129230) (\FONTFILENAME.OLD 129232 . 132181) (\FONTFILENAME.NEW 132183 . 134440) (FONTSPECFROMFILENAME +134442 . 138978) (\FONTINFOFROMFILENAME.OLD 138980 . 141257)) (141526 177329 (FONTCOPY 141536 . 146599 +) (FONTP 146601 . 146900) (FONTUNPARSE 146902 . 148621) (SETFONTDESCRIPTOR 148623 . 150087) ( +\STREAMCHARWIDTH 150089 . 154253) (\COERCECHARSET 154255 . 156850) (\BUILDSLUGCSINFO 156852 . 160475) +(\FONTSYMBOL 160477 . 161127) (\DEVICESYMBOL 161129 . 161998) (\FONTFACE 162000 . 169190) ( +\FONTFACE.COLOR 169192 . 176112) (SETFONTCHARENCODING 176114 . 177327)) (177330 197265 (FONTSAVAILABLE + 177340 . 182694) (FONTEXISTS? 182696 . 186674) (\SEARCHFONTFILES 186676 . 189761) (FLUSHFONTCACHE +189763 . 191622) (FLUSHFONTSINCORE 191624 . 191821) (FINDFONTFILES 191823 . 195037) (SORTFONTSPECS +195039 . 197263)) (197266 200875 (MATCHFONTFACE 197276 . 198091) (MAKEFONTFACE 198093 . 199119) ( +FONTFACETOATOM 199121 . 200873)) (201506 201998 (\UNITWIDTHSVECTOR 201516 . 201996)) (216592 218659 ( +FONTDESCRIPTOR.DEFPRINT 216602 . 218181) (FONTCLASS.DEFPRINT 218183 . 218657)) (222488 225278 ( +\CREATEKERNELEMENT 222498 . 222856) (\FSETLEFTKERN 222858 . 223349) (\FGETLEFTKERN 223351 . 225276)) ( +225279 234915 (\CREATEFONT 225289 . 226728) (\CREATECHARSET 226730 . 230666) (\INSTALLCHARSETINFO +230668 . 234002) (\INSTALLCHARSETINFO.CHARENCODING 234004 . 234913)) (235237 236601 ( +\FONTRESETCHARWIDTHS 235247 . 236599)) (237231 247278 (\CREATEDISPLAYFONT 237241 . 239090) ( +\CREATECHARSET.DISPLAY 239092 . 244801) (\FONTEXISTS?.DISPLAY 244803 . 247276)) (247279 262144 ( +STRIKEFONT.FILEP 247289 . 248177) (STRIKEFONT.GETCHARSET 248179 . 253771) (WRITESTRIKEFONTFILE 253773 + . 258684) (STRIKECSINFO 258686 . 262142)) (262175 278492 (MAKEBOLD.CHARSET 262185 . 265834) ( +MAKEBOLD.CHAR 265836 . 267588) (MAKEITALIC.CHARSET 267590 . 271263) (MAKEITALIC.CHAR 271265 . 273611) +(\SFMAKEBOLD 273613 . 275837) (\SFMAKEITALIC 275839 . 278490)) (278493 282642 (\SFMAKEROTATEDFONT +278503 . 279904) (\SFROTATECSINFO 279906 . 280543) (\SFROTATEFONTCHARACTERS 280545 . 280925) ( +\SFROTATECSINFOOFFSETS 280927 . 282640)) (282643 284024 (\SFMAKECOLOR 282653 . 284022))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index 93fa68caa45cf198376fd226fa8c85551020072d..11d3c342963a343005d5c5b2e3b69f162db3a03d 100644 GIT binary patch delta 18086 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 QeU=lcCEu)F$URg3ze55LmjD0& diff --git a/sources/MEDLEYDIR b/sources/MEDLEYDIR index db14c28b2..ef3631335 100644 --- a/sources/MEDLEYDIR +++ b/sources/MEDLEYDIR @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "22-Nov-2025 12:26:06" {WMEDLEY}MEDLEYDIR.;36 17284 +(FILECREATED "26-Nov-2025 21:51:39" {WMEDLEY}MEDLEYDIR.;43 15970 :EDIT-BY rmk :CHANGES-TO (VARS MEDLEYDIRCOMS) - :PREVIOUS-DATE "19-Nov-2025 00:56:15" {WMEDLEY}MEDLEYDIR.;35) + :PREVIOUS-DATE "26-Nov-2025 17:12:16" {WMEDLEY}MEDLEYDIR.;42) (PRETTYCOMPRINT MEDLEYDIRCOMS) @@ -28,8 +28,8 @@ (* ;; "The INITVARS prevents this from accumulating entries from other files that happen to have been loaded when this is worked on and saved. The loadup scripts set MEDLEY-INIT-VARS to NOBIND to make sure that these are the initial values (as opposed to whatever there was in the startup sysout. But the FONT cache variables have to be specified here, because FONT is in the INIT and the resetting to NOBIND would wipe out these entries even if they were already correct in the init sysout.") - [INITVARS (MEDLEY-INIT-VARS '((\FONTEXISTS?-CACHE) - (\FONTSAVAILABLEFILECACHE) + [INITVARS (MEDLEY-INIT-VARS '((\FONTEXISTS?-CACHE NIL RESET) + (\FONTSAVAILABLEFILECACHE NIL RESET) [LISPUSERSDIRECTORIES (MEDLEYDIR '("library" "lispusers" "internal" "greetfiles" @@ -47,9 +47,11 @@ (AND (GETD 'PSEUDOHOSTS) (TARGETHOST 'LI) (PSEUDOHOST 'LI LHD)) - LHD)) - [USERGREETFILES (LIST (CONS LOGINHOST/DIR '("INIT" COM)) + LHD) + RESET) + (USERGREETFILES [LIST (CONS LOGINHOST/DIR '("INIT" COM)) (CONS LOGINHOST/DIR '("INIT"] + RESET) (DISPLAYFONTDIRECTORIES (MEDLEYDIR '("fonts/medleydisplayfonts" "fonts/displayfonts") NIL NIL T)) @@ -60,18 +62,6 @@ NIL NIL T)) (UNICODEDIRECTORIES (MEDLEYDIR '("unicode/xerox") NIL NIL T)) - (LOGINHOST/DIR (LET [(LHD (DIRECTORYNAME (OR (UNIX-GETENV - "LOGINDIR") - (UNIX-GETENV - "HOME"] - (AND (GETD 'PSEUDOHOSTS) - (TARGETHOST 'LI) - (PSEUDOHOST 'LI LHD)) - LHD) - RESET) - (USERGREETFILES [LIST (CONS LOGINHOST/DIR '("INIT" COM)) - (CONS LOGINHOST/DIR '("INIT"] - RESET) (XCL::*WHERE-IS-CASH-FILES* (MEDLEYDIR '("loadups") "whereis.hash" NIL T)) (LOADUPSDIRECTORIES (MEDLEYDIR '("loadups") @@ -259,8 +249,8 @@ (RPAQ? MEDLEY-INIT-VARS - '((\FONTEXISTS?-CACHE) - (\FONTSAVAILABLEFILECACHE) + '((\FONTEXISTS?-CACHE NIL RESET) + (\FONTSAVAILABLEFILECACHE NIL RESET) [LISPUSERSDIRECTORIES (MEDLEYDIR '("library" "lispusers" "internal" "greetfiles" "doctools"] [LISPSOURCEDIRECTORIES (MEDLEYDIR '("sources"] (LISPSOURCEDIRECTORY (CAR LISPSOURCEDIRECTORIES)) @@ -272,9 +262,11 @@ (AND (GETD 'PSEUDOHOSTS) (TARGETHOST 'LI) (PSEUDOHOST 'LI LHD)) - LHD)) - [USERGREETFILES (LIST (CONS LOGINHOST/DIR '("INIT" COM)) + LHD) + RESET) + (USERGREETFILES [LIST (CONS LOGINHOST/DIR '("INIT" COM)) (CONS LOGINHOST/DIR '("INIT"] + RESET) (DISPLAYFONTDIRECTORIES (MEDLEYDIR '("fonts/medleydisplayfonts" "fonts/displayfonts") NIL NIL T)) (POSTSCRIPTFONTDIRECTORIES (MEDLEYDIR '("fonts/postscriptfonts") @@ -283,16 +275,6 @@ NIL NIL T)) (UNICODEDIRECTORIES (MEDLEYDIR '("unicode/xerox") NIL NIL T)) - (LOGINHOST/DIR (LET [(LHD (DIRECTORYNAME (OR (UNIX-GETENV "LOGINDIR") - (UNIX-GETENV "HOME"] - (AND (GETD 'PSEUDOHOSTS) - (TARGETHOST 'LI) - (PSEUDOHOST 'LI LHD)) - LHD) - RESET) - (USERGREETFILES [LIST (CONS LOGINHOST/DIR '("INIT" COM)) - (CONS LOGINHOST/DIR '("INIT"] - RESET) (XCL::*WHERE-IS-CASH-FILES* (MEDLEYDIR '("loadups") "whereis.hash" NIL T)) (LOADUPSDIRECTORIES (MEDLEYDIR '("loadups") @@ -302,6 +284,6 @@ (ADDTOVAR GLOBALVARS MEDLEYDIR MEDLEY-INIT-VARS \SAVE.MEDLEYDIR DIRECTORIES SYSOUTCOMMITS) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (6186 14089 (MEDLEY-INIT-VARS 6196 . 9674) (MEDLEYDIR 9676 . 12889) (MEDLEYSUBSTDIR -12891 . 13869) (SET-SYSOUT-COMMIT 13871 . 14087))))) + (FILEMAP (NIL (5329 13232 (MEDLEY-INIT-VARS 5339 . 8817) (MEDLEYDIR 8819 . 12032) (MEDLEYSUBSTDIR +12034 . 13012) (SET-SYSOUT-COMMIT 13014 . 13230))))) STOP diff --git a/sources/MEDLEYDIR.LCOM b/sources/MEDLEYDIR.LCOM index 76cc245539576177b221fd5f147d5dbf9fa41875..8ad061fbf7d7a2d0a3055bd589027d17795b6128 100644 GIT binary patch delta 402 zcmZ2z``=eUw)ack%5t^f{~$>siBpz<-}}#DHCH&1ui8c6NIdR0Z_`y$Y|mg zbtWT|iFd^;OA2C^Yl>&at(G3nLJTKnh(t70`oN$G$wBl z5}iC((2Pg?R|_7_$LvIJ$FCvOl|0xz={Xe$c-KUR9&*FR4TPdR4iDr zV8xF_bo&7C1gHv2R_qYZz@iTTsI-&`m*brj2PVgquRs3=7Gnj?|TjIPQSE<|Edle43qTl#)%l^A}mG34Cg-q zU`gEt*Ju2OGq?_=bVuRCzk=+*^8@bHu7>N)K1pvD;dx7+y=%!0IFWBQN9mSnnygRY zR9iidXwH~YNzl{=a7Df<5jfCXcp;lepS2B`%Vv}0q7WrMf|q)}K$0|!s;q!Br3>HG zTZDvBv>oOJ>T8`0o?ZH0M{4L#;v%aGkrz>%i&2^8u_zdUlcf-v?Tc`Zs+bb0Dp<4! z`)w5-PzrOM!Yg_WKF}3Z&)O55>jF}yO;)o)R8hK_7A5OXsGD13>WlDE*^-Uj!-Jzo>w6D>-RQ&thk6cks-Sa4 byNvMzq$gSr*K!-_6lpGVI8u+H+qwS}9gK|z From a9a4d386f210872e681c9d68140af6b077c4408e Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Thu, 27 Nov 2025 08:57:05 -0800 Subject: [PATCH 7/9] Specify the value of FLUSHFONTCACHE --- docs/internal/FONTCODECHANGES.tedit | Bin 34687 -> 34760 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/internal/FONTCODECHANGES.tedit b/docs/internal/FONTCODECHANGES.tedit index 028503b757b5df434a0833b435d97d6025087f15..1d464efcea8f9eb07dacfcd437c9c19b41a95ec0 100644 GIT binary patch delta 111 zcmez0$8@5fX+yrbXGlh>LRn%?X{thIUP@+iVo7STLJ3eTuQWF)wMZd9O(8X}q$m?8 z3SuTEXDF0Z7Ni1|B$g Date: Thu, 27 Nov 2025 10:06:35 -0800 Subject: [PATCH 8/9] Defaulting all arguments to FLUSHFONTCACHE deletes everything, not just the defaultfont --- docs/internal/FONTCODECHANGES.tedit | Bin 34760 -> 34891 bytes sources/FONT | 104 +++++++++++++++------------- sources/FONT.LCOM | Bin 70581 -> 70680 bytes 3 files changed, 57 insertions(+), 47 deletions(-) diff --git a/docs/internal/FONTCODECHANGES.tedit b/docs/internal/FONTCODECHANGES.tedit index 1d464efcea8f9eb07dacfcd437c9c19b41a95ec0..8bcbf2644c1be7d9747042d96110a509aa158835 100644 GIT binary patch delta 196 zcmX@n&vbeM(}q0rde1b4#Joy{{4@nOM_*5$NQKmrWIctA036v5)d;puOzjo zpeVH@HANw@SfL~%RiQjHCnY(tC`Ca_PeCChqqJB-!_6l&*u%}=FT~l=*~3*6q$Ecn zHMgLoQXvt@0@?u5n4FlLky@+=)RU@EmYB1-%zT=guoMFjFaj|fh`|iRn>X{;6>zeG d&79oPt|t`e;uzv;mG$xNNd|^21t#OFT>yEXJeU9g delta 60 zcmV-C0K@;wkOIh$0FONT.;634 287020 +(FILECREATED "27-Nov-2025 10:02:27" {WMEDLEY}FONT.;636 287389 :EDIT-BY rmk - :CHANGES-TO (VARS FONTCOMS) + :CHANGES-TO (FNS FLUSHFONTCACHE) - :PREVIOUS-DATE "23-Nov-2025 21:42:37" {WMEDLEY}FONT.;633) + :PREVIOUS-DATE "26-Nov-2025 14:22:51" {WMEDLEY}FONT.;634) (PRETTYCOMPRINT FONTCOMS) @@ -2995,17 +2995,27 @@ do (push FONTSFOUND THISFONT))) finally (RETURN (DREVERSE FONTSFOUND]) (FLUSHFONTCACHE - [LAMBDA (TYPE FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 22-Nov-2025 15:52 by rmk") + [LAMBDA (TYPE FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 27-Nov-2025 10:02 by rmk") + (* ; "Edited 22-Nov-2025 15:52 by rmk") (* ;;  "Removes information for font(s) from the TYPE cache, if TYPE is NIL, all caches are flushed") (CL:UNLESS TYPE - (SETQ TYPE '(:INCORE :EXISTS :AVAILABLE))) (* ; "Edited 22-Nov-2025 10:18 by rmk") + (SETQ TYPE '(:INCORE :EXISTS :AVAILABLE))) (if (LISTP TYPE) then (for TY in TYPE collect (FLUSHFONTCACHE TY FAMILY SIZE FACE ROTATION DEVICE)) - else (SPREADFONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE)) - (LET ((NFLUSHED 0)) + else + (* ;; "If all NILs, don't want the default font") + + (SPREADFONTSPEC (\FONT.CHECKARGS (OR FAMILY '*) + (OR SIZE '*) + (OR FACE '*) + (OR ROTATION '*) + (OR DEVICE '*) + T)) + (LET ((NFLUSHED 0) + FONTX) (DECLARE (SPECVARS NFLUSHED)) [MAPMULTI (SELECTQ TYPE (:INCORE \FONTSINCORE) @@ -4689,44 +4699,44 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12484 22197 (CHARWIDTH 12494 . 13279) (CHARWIDTHY 13281 . 14798) (STRINGWIDTH 14800 . -15893) (\CHARWIDTH.DISPLAY 15895 . 16308) (\STRINGWIDTH.DISPLAY 16310 . 16734) (\STRINGWIDTH.GENERIC -16736 . 22195)) (22198 28718 (DEFAULTFONT 22208 . 23493) (FONTCLASS 23495 . 25657) (FONTCLASSUNPARSE -25659 . 26558) (FONTCLASSCOMPONENT 26560 . 27148) (SETFONTCLASSCOMPONENT 27150 . 27592) ( -GETFONTCLASSCOMPONENT 27594 . 28716)) (30431 54686 (FONTCREATE 30441 . 33686) (FONTCREATE1 33688 . -36303) (FONTCREATE.SLUGFD 36305 . 37787) (\FONT.CHECKARGS 37789 . 44538) (\FONT.CHECKARGS1 44540 . -49063) (\FONTCREATE1.NOFN 49065 . 49279) (FONTFILEP 49281 . 50169) (\READCHARSET 50171 . 54684)) ( -54687 61763 (\FONT.CHECKARGS 54697 . 61446) (\CHARSET.CHECK 61448 . 61761)) (61764 65024 ( -COERCEFONTSPEC 61774 . 65022)) (67094 68433 (MAKEFONTSPEC 67104 . 68431)) (68434 76611 (COMPLETE.FONT -68444 . 70967) (COMPLETEFONTP 70969 . 71592) (COMPLETE.CHARSET 71594 . 74279) (PRUNESLUGCSINFOS 74281 - . 75206) (MONOSPACEFONTP 75208 . 76609)) (76650 84571 (FONTASCENT 76660 . 77044) (FONTDESCENT 77046 - . 77531) (FONTHEIGHT 77533 . 77935) (FONTPROP 77937 . 83848) (\AVGCHARWIDTH 83850 . 84569)) (85228 -86136 (FONTDEVICEPROP 85238 . 86134)) (86182 87036 (EDITCHAR 86192 . 87034)) (87082 99272 ( -GETCHARBITMAP 87092 . 88216) (PUTCHARBITMAP 88218 . 90376) (\GETCHARBITMAP.CSINFO 90378 . 92394) ( -\PUTCHARBITMAP.CSINFO 92396 . 99270)) (99273 119753 (MOVECHARBITMAP 99283 . 101177) (MOVEFONTCHARS -101179 . 105139) (\MOVEFONTCHAR 105141 . 109984) (\MOVEFONTCHARS.SOURCEDATA 109986 . 116091) ( -\MAKESLUGCHAR 116093 . 118628) (SLUGCHARP.DISPLAY 118630 . 119751)) (120686 141259 (FONTFILES 120696 - . 122529) (\FINDFONTFILE 122531 . 124248) (\FONTFILENAMES 124250 . 125245) (\FONTFILENAME 125247 . -129230) (\FONTFILENAME.OLD 129232 . 132181) (\FONTFILENAME.NEW 132183 . 134440) (FONTSPECFROMFILENAME -134442 . 138978) (\FONTINFOFROMFILENAME.OLD 138980 . 141257)) (141526 177329 (FONTCOPY 141536 . 146599 -) (FONTP 146601 . 146900) (FONTUNPARSE 146902 . 148621) (SETFONTDESCRIPTOR 148623 . 150087) ( -\STREAMCHARWIDTH 150089 . 154253) (\COERCECHARSET 154255 . 156850) (\BUILDSLUGCSINFO 156852 . 160475) -(\FONTSYMBOL 160477 . 161127) (\DEVICESYMBOL 161129 . 161998) (\FONTFACE 162000 . 169190) ( -\FONTFACE.COLOR 169192 . 176112) (SETFONTCHARENCODING 176114 . 177327)) (177330 197265 (FONTSAVAILABLE - 177340 . 182694) (FONTEXISTS? 182696 . 186674) (\SEARCHFONTFILES 186676 . 189761) (FLUSHFONTCACHE -189763 . 191622) (FLUSHFONTSINCORE 191624 . 191821) (FINDFONTFILES 191823 . 195037) (SORTFONTSPECS -195039 . 197263)) (197266 200875 (MATCHFONTFACE 197276 . 198091) (MAKEFONTFACE 198093 . 199119) ( -FONTFACETOATOM 199121 . 200873)) (201506 201998 (\UNITWIDTHSVECTOR 201516 . 201996)) (216592 218659 ( -FONTDESCRIPTOR.DEFPRINT 216602 . 218181) (FONTCLASS.DEFPRINT 218183 . 218657)) (222488 225278 ( -\CREATEKERNELEMENT 222498 . 222856) (\FSETLEFTKERN 222858 . 223349) (\FGETLEFTKERN 223351 . 225276)) ( -225279 234915 (\CREATEFONT 225289 . 226728) (\CREATECHARSET 226730 . 230666) (\INSTALLCHARSETINFO -230668 . 234002) (\INSTALLCHARSETINFO.CHARENCODING 234004 . 234913)) (235237 236601 ( -\FONTRESETCHARWIDTHS 235247 . 236599)) (237231 247278 (\CREATEDISPLAYFONT 237241 . 239090) ( -\CREATECHARSET.DISPLAY 239092 . 244801) (\FONTEXISTS?.DISPLAY 244803 . 247276)) (247279 262144 ( -STRIKEFONT.FILEP 247289 . 248177) (STRIKEFONT.GETCHARSET 248179 . 253771) (WRITESTRIKEFONTFILE 253773 - . 258684) (STRIKECSINFO 258686 . 262142)) (262175 278492 (MAKEBOLD.CHARSET 262185 . 265834) ( -MAKEBOLD.CHAR 265836 . 267588) (MAKEITALIC.CHARSET 267590 . 271263) (MAKEITALIC.CHAR 271265 . 273611) -(\SFMAKEBOLD 273613 . 275837) (\SFMAKEITALIC 275839 . 278490)) (278493 282642 (\SFMAKEROTATEDFONT -278503 . 279904) (\SFROTATECSINFO 279906 . 280543) (\SFROTATEFONTCHARACTERS 280545 . 280925) ( -\SFROTATECSINFOOFFSETS 280927 . 282640)) (282643 284024 (\SFMAKECOLOR 282653 . 284022))))) + (FILEMAP (NIL (12489 22202 (CHARWIDTH 12499 . 13284) (CHARWIDTHY 13286 . 14803) (STRINGWIDTH 14805 . +15898) (\CHARWIDTH.DISPLAY 15900 . 16313) (\STRINGWIDTH.DISPLAY 16315 . 16739) (\STRINGWIDTH.GENERIC +16741 . 22200)) (22203 28723 (DEFAULTFONT 22213 . 23498) (FONTCLASS 23500 . 25662) (FONTCLASSUNPARSE +25664 . 26563) (FONTCLASSCOMPONENT 26565 . 27153) (SETFONTCLASSCOMPONENT 27155 . 27597) ( +GETFONTCLASSCOMPONENT 27599 . 28721)) (30436 54691 (FONTCREATE 30446 . 33691) (FONTCREATE1 33693 . +36308) (FONTCREATE.SLUGFD 36310 . 37792) (\FONT.CHECKARGS 37794 . 44543) (\FONT.CHECKARGS1 44545 . +49068) (\FONTCREATE1.NOFN 49070 . 49284) (FONTFILEP 49286 . 50174) (\READCHARSET 50176 . 54689)) ( +54692 61768 (\FONT.CHECKARGS 54702 . 61451) (\CHARSET.CHECK 61453 . 61766)) (61769 65029 ( +COERCEFONTSPEC 61779 . 65027)) (67099 68438 (MAKEFONTSPEC 67109 . 68436)) (68439 76616 (COMPLETE.FONT +68449 . 70972) (COMPLETEFONTP 70974 . 71597) (COMPLETE.CHARSET 71599 . 74284) (PRUNESLUGCSINFOS 74286 + . 75211) (MONOSPACEFONTP 75213 . 76614)) (76655 84576 (FONTASCENT 76665 . 77049) (FONTDESCENT 77051 + . 77536) (FONTHEIGHT 77538 . 77940) (FONTPROP 77942 . 83853) (\AVGCHARWIDTH 83855 . 84574)) (85233 +86141 (FONTDEVICEPROP 85243 . 86139)) (86187 87041 (EDITCHAR 86197 . 87039)) (87087 99277 ( +GETCHARBITMAP 87097 . 88221) (PUTCHARBITMAP 88223 . 90381) (\GETCHARBITMAP.CSINFO 90383 . 92399) ( +\PUTCHARBITMAP.CSINFO 92401 . 99275)) (99278 119758 (MOVECHARBITMAP 99288 . 101182) (MOVEFONTCHARS +101184 . 105144) (\MOVEFONTCHAR 105146 . 109989) (\MOVEFONTCHARS.SOURCEDATA 109991 . 116096) ( +\MAKESLUGCHAR 116098 . 118633) (SLUGCHARP.DISPLAY 118635 . 119756)) (120691 141264 (FONTFILES 120701 + . 122534) (\FINDFONTFILE 122536 . 124253) (\FONTFILENAMES 124255 . 125250) (\FONTFILENAME 125252 . +129235) (\FONTFILENAME.OLD 129237 . 132186) (\FONTFILENAME.NEW 132188 . 134445) (FONTSPECFROMFILENAME +134447 . 138983) (\FONTINFOFROMFILENAME.OLD 138985 . 141262)) (141531 177334 (FONTCOPY 141541 . 146604 +) (FONTP 146606 . 146905) (FONTUNPARSE 146907 . 148626) (SETFONTDESCRIPTOR 148628 . 150092) ( +\STREAMCHARWIDTH 150094 . 154258) (\COERCECHARSET 154260 . 156855) (\BUILDSLUGCSINFO 156857 . 160480) +(\FONTSYMBOL 160482 . 161132) (\DEVICESYMBOL 161134 . 162003) (\FONTFACE 162005 . 169195) ( +\FONTFACE.COLOR 169197 . 176117) (SETFONTCHARENCODING 176119 . 177332)) (177335 197634 (FONTSAVAILABLE + 177345 . 182699) (FONTEXISTS? 182701 . 186679) (\SEARCHFONTFILES 186681 . 189766) (FLUSHFONTCACHE +189768 . 191991) (FLUSHFONTSINCORE 191993 . 192190) (FINDFONTFILES 192192 . 195406) (SORTFONTSPECS +195408 . 197632)) (197635 201244 (MATCHFONTFACE 197645 . 198460) (MAKEFONTFACE 198462 . 199488) ( +FONTFACETOATOM 199490 . 201242)) (201875 202367 (\UNITWIDTHSVECTOR 201885 . 202365)) (216961 219028 ( +FONTDESCRIPTOR.DEFPRINT 216971 . 218550) (FONTCLASS.DEFPRINT 218552 . 219026)) (222857 225647 ( +\CREATEKERNELEMENT 222867 . 223225) (\FSETLEFTKERN 223227 . 223718) (\FGETLEFTKERN 223720 . 225645)) ( +225648 235284 (\CREATEFONT 225658 . 227097) (\CREATECHARSET 227099 . 231035) (\INSTALLCHARSETINFO +231037 . 234371) (\INSTALLCHARSETINFO.CHARENCODING 234373 . 235282)) (235606 236970 ( +\FONTRESETCHARWIDTHS 235616 . 236968)) (237600 247647 (\CREATEDISPLAYFONT 237610 . 239459) ( +\CREATECHARSET.DISPLAY 239461 . 245170) (\FONTEXISTS?.DISPLAY 245172 . 247645)) (247648 262513 ( +STRIKEFONT.FILEP 247658 . 248546) (STRIKEFONT.GETCHARSET 248548 . 254140) (WRITESTRIKEFONTFILE 254142 + . 259053) (STRIKECSINFO 259055 . 262511)) (262544 278861 (MAKEBOLD.CHARSET 262554 . 266203) ( +MAKEBOLD.CHAR 266205 . 267957) (MAKEITALIC.CHARSET 267959 . 271632) (MAKEITALIC.CHAR 271634 . 273980) +(\SFMAKEBOLD 273982 . 276206) (\SFMAKEITALIC 276208 . 278859)) (278862 283011 (\SFMAKEROTATEDFONT +278872 . 280273) (\SFROTATECSINFO 280275 . 280912) (\SFROTATEFONTCHARACTERS 280914 . 281294) ( +\SFROTATECSINFOOFFSETS 281296 . 283009)) (283012 284393 (\SFMAKECOLOR 283022 . 284391))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index 11d3c342963a343005d5c5b2e3b69f162db3a03d..2dffa9b789a06cd1f9cc8d657a1e028b49377f4d 100644 GIT binary patch delta 1078 zcmZXTJ&4pm6vsDuoadqFsfc=~_gL}cR!=fBo3BODxny=XkWFGHd)&eaYT*ZhVq;?= zXr&zLIgN$A7J^7vU9b?fu(s4%tZb~bu<#|hJ9JGT?@i`S-h03IPygx2<7Xoe7q(lo z;k6sHRHp_Iy`j?vwU)0O)y(C`3rFlmoi-S$&Ws;!`hjp0!BgQumHvN7-PiVxnLure z*^WA;P3~`o62_ZBSGJo`n7Z6;iy3IdiJ14JuAKGoQ)*OW*>mm7)aVRUK8$GU$-eoG zZQkE-wt|=Xx$n|CgQ;`VyS6*9SY~(IJdq*=$5Knv?XC@2lb7+h2e1y3}2H%RliY!7_DiX~}3w^p+1gY(+h&Fo59 z(%pxTstgwMDB0`GMFG_7EYIVItz+VJmj}QcmYrBWtTDStDi%@^N#x84vhw>P zBCB}CUUvM|Che9@Kt@T?k&J~ap>CPb4Y3sT2rTkA7NJL>PE3$o%E$#~8EY=H)?6K1 zECVPWTy>cVAx~O}+S0*|0u)HvL4-ciMc~_zQJh3E*bD+LQ!q^R`SrmarVe2g3aA^T zbf|4BeK4se275JAEe|F+r8sXXc;Xh?$+ahe;>d=1;Y(6bmVBQ3K`sLzwgc+=rrqm_ zX{Z;2oh?jQ4$KeTD8T@OK@n)ijT7A*?i}gW0Hsp{i{S$$ OTLZ&_TK4Jv*Z2=aMjBiI delta 925 zcmZvaJ#5oJ6vul_szSxkmNY{f+D9m;1zOp6{z`-dj(tfjIkxL_K8i9SB)R|_VrqpD z8;GVi(1E2BtjJ0!3snme3j-2jVL(D+WME)nCHAIF18@hxgeg#dDx*0MUDf?bz`BgR# z#UP}0$FH#kTfB!nCJWx}I}2FCDqy*&;3DBu=oBLH3-mdcg)*pM)3RA}qol|@4D6)` zd3(A(WSgB-jsKWl9aIW@dnP*}6BSxL4r@us(g+HKKbTo6Da0k{RdW`>mWHlC@reUShNoP|+CrIf~-U<7;T> zZoJw6zP7QMm!OqYWGmH@?}DO8iI(G47U^=$bb%D47`NxpwAvM>&4_x;@jV7aFdqKK zk2c@sySm2zbia%vezh|*d}(h?8f(n*`<;hqmXGdC9{+V?Kzw#%Hr94dpmkle>W5t$ zSwJlYiY`IT6M~>gnxW_E~6^o`5qPasJ#Fim~Zb+rm(K{PEAVA z3m6k Date: Sat, 29 Nov 2025 16:35:46 -0800 Subject: [PATCH 9/9] \FONT.CHECKARGS was in the COMS twice --- sources/FONT | 206 ++++++++++------------------------------------ sources/FONT.LCOM | Bin 70680 -> 69409 bytes 2 files changed, 45 insertions(+), 161 deletions(-) diff --git a/sources/FONT b/sources/FONT index 08f6a447c..fb086c1fa 100644 --- a/sources/FONT +++ b/sources/FONT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "27-Nov-2025 10:02:27" {WMEDLEY}FONT.;636 287389 +(FILECREATED "29-Nov-2025 16:32:59" {WMEDLEY}FONT.;638 280293 :EDIT-BY rmk - :CHANGES-TO (FNS FLUSHFONTCACHE) + :CHANGES-TO (VARS FONTCOMS) - :PREVIOUS-DATE "26-Nov-2025 14:22:51" {WMEDLEY}FONT.;634) + :PREVIOUS-DATE "28-Nov-2025 14:28:16" {WMEDLEY}FONT.;637) (PRETTYCOMPRINT FONTCOMS) @@ -15,10 +15,6 @@ [ (* ;; "font functions ") - (DECLARE%: EVAL@COMPILE DONTCOPY (* ; - "Can't be loaded/not needed during INIT, load at end of LOAD-LISP.") - (FILES (SYSLOAD) - MULTI-ALIST)) (FNS CHARWIDTH CHARWIDTHY STRINGWIDTH \CHARWIDTH.DISPLAY \STRINGWIDTH.DISPLAY \STRINGWIDTH.GENERIC) (COMS (FNS DEFAULTFONT FONTCLASS FONTCLASSUNPARSE FONTCLASSCOMPONENT SETFONTCLASSCOMPONENT @@ -29,8 +25,8 @@ (COMS (* ;; "Creation: ") - (FNS FONTCREATE FONTCREATE1 FONTCREATE.SLUGFD \FONT.CHECKARGS \FONT.CHECKARGS1 - \FONTCREATE1.NOFN FONTFILEP \READCHARSET) + (FNS FONTCREATE FONTCREATE1 FONTCREATE.SLUGFD \FONT.CHECKARGS1 \FONTCREATE1.NOFN + FONTFILEP \READCHARSET) (FNS \FONT.CHECKARGS \CHARSET.CHECK) (FNS COERCEFONTSPEC) (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS COERCEFONTSPEC.MATCH COERCEFONTSPEC.TARGET)) @@ -214,11 +210,6 @@ (* ;; "font functions ") -(DECLARE%: EVAL@COMPILE DONTCOPY - -(FILESLOAD (SYSLOAD) - MULTI-ALIST) -) (DEFINEQ (CHARWIDTH @@ -626,113 +617,6 @@ else (for CS from 0 to (ADD1 \MAXCHARSET) do (\SETCHARSETINFO FONTDESC CS SLUGCSINFO))) FONTDESC]) -(\FONT.CHECKARGS - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE ALWAYSFONTSPEC) (* ; "Edited 22-Nov-2025 11:31 by rmk") - (* ; "Edited 28-Aug-2025 14:46 by rmk") - (* ; "Edited 23-Aug-2025 11:54 by rmk") - (* ; "Edited 17-Aug-2025 19:15 by rmk") - (* ; "Edited 12-Aug-2025 22:36 by rmk") - (* ; "Edited 10-Aug-2025 12:06 by rmk") - (* ; "Edited 8-Aug-2025 09:57 by rmk") - (* ; "Edited 27-Jul-2025 13:30 by rmk") - (* ; "Edited 22-Jul-2025 23:07 by rmk") - (* ; "Edited 21-Jul-2025 09:22 by rmk") - (* ; "Edited 14-Jul-2025 20:09 by rmk") - (* ; "Edited 11-Jul-2025 10:15 by rmk") - (* ; "Edited 5-Jul-2025 13:37 by rmk") - (* ; "Edited 2-Jul-2025 16:50 by rmk") - (* ; "Edited 27-Jun-2025 10:42 by rmk") - (* ; "Edited 15-Jun-2025 00:25 by rmk") - - (* ;; "DON'T BREAK, TRACE, OR UNSAVE THIS UNLESS ALL SYSTEM FONTS HAVE ALREADY BEEN INSTANTIATED") - - (* ;; "Decodes and checks the various ways of specifying the arguments to font lookup functions.") - - (* ;; "If FAMILY can be coerced to a font descriptor and none of its properties are overwritten by the other aguments, then that font descriptor is returned. Otherwise the value is the coerced fontspec (family size face rotation device).") - - (LET (FONTX) - (CL:WHEN (AND (EQ 'CLASS (CAR (LISTP FAMILY))) - (LITATOM (CADR FAMILY))) - - (* ;; "This used to be at the entry to FONTCREATE, and it returned the FONTCLASS. That seemed wrong--FONTCREATE should always return a fontdescriptor. So here we build a throwaway fontclass, coerce it to its device font, and fall through.") - - (SETQ FAMILY (\FONT.CHECKARGS1 (FONTCLASS (CADR FAMILY) - (CDDR FAMILY)) - DEVICE))) - (CL:UNLESS (AND FAMILY (LITATOM FAMILY) - (NEQ FAMILY T)) - - (* ;; "FAMILY T or NIL produces an error below") - - [if (LISTP FAMILY) - then - (* ;; "Presumably a FONTSPEC. The variables here override the FONTX properties, as with the fontdescriptor below ") - - (SETQ FONTX (CL:IF (EQ 'FONT (CAR FAMILY)) - (CDR FAMILY) - FAMILY)) - (SETQ FAMILY (fetch (FONTSPEC FSFAMILY) of FONTX)) - (SETQ SIZE (OR SIZE (fetch (FONTSPEC FSSIZE) of FONTX))) - (SETQ FACE (OR FACE (fetch (FONTSPEC FSFACE) of FONTX))) - (SETQ ROTATION (OR ROTATION (fetch (FONTSPEC FSROTATION) of FONTX))) - (SETQ DEVICE (OR DEVICE (fetch (FONTSPEC FSDEVICE) of FONTX))) - (SETQ FONTX NIL) - elseif (SETQ FONTX (CL:IF (type? FONTDESCRIPTOR FAMILY) - FAMILY - (\FONT.CHECKARGS1 FAMILY DEVICE T))) - then - (* ;; - "FAMILY was a spec for a font descriptor. Are any of its properties overwritten?") - - (SETQ FAMILY (fetch (FONTDESCRIPTOR FONTFAMILY) of FONTX)) - (CL:UNLESS SIZE - (SETQ SIZE (fetch (FONTDESCRIPTOR FONTSIZE) of FONTX))) - (CL:UNLESS FACE - (SETQ FACE (fetch (FONTDESCRIPTOR FONTFACE) of FONTX))) - (CL:UNLESS ROTATION - (SETQ ROTATION (fetch (FONTDESCRIPTOR ROTATION) of FONTX))) - (CL:UNLESS DEVICE - (SETQ DEVICE (fetch (FONTDESCRIPTOR FONTDEVICE) of FONTX)))]) - - (* ;; "We have decoded the arguments, fill in defaults and validate") - - (SETQ DEVICE (if (NULL DEVICE) - then 'DISPLAY - elseif (OR (AND (LITATOM DEVICE) - (NEQ DEVICE T)) - (STRINGP DEVICE)) - then (\DEVICESYMBOL DEVICE) - elseif [AND (SETQ DEVICE (\GETSTREAM DEVICE 'OUTPUT T)) - (CAR (MKLIST (IMAGESTREAMTYPE DEVICE] - else (\ILLEGAL.ARG DEVICE))) - (CL:UNLESS (AND FAMILY (LITATOM FAMILY) - (NEQ FAMILY T)) - (ERROR "Illegal font family" FAMILY)) - (SETQ FAMILY (U-CASE FAMILY)) - (CL:UNLESS (OR (AND (FIXP SIZE) - (IGREATERP SIZE 0)) - (EQ SIZE '*)) - (ERROR "Illegal font size" SIZE)) - (CL:UNLESS (EQ FACE '*) - (SETQ FACE (\FONTFACE FACE NIL DEVICE))) - (if (NULL ROTATION) - then (SETQ ROTATION 0) - elseif (AND (FIXP ROTATION) - (IGEQ ROTATION 0)) - elseif (EQ ROTATION '*) - else (\ILLEGAL.ARG ROTATION)) - (CL:WHEN FONTX - - (* ;; "Return FONTX only if no fields were overwritten") - - (CL:UNLESS (AND (NOT ALWAYSFONTSPEC) - (EQ SIZE (fetch (FONTDESCRIPTOR FONTSIZE) of FONTX)) - (EQUAL FACE (fetch (FONTDESCRIPTOR FONTFACE) of FONTX)) - (EQ ROTATION (fetch (FONTDESCRIPTOR ROTATION) of FONTX)) - (EQ DEVICE (fetch (FONTDESCRIPTOR FONTDEVICE) of FONTX))) - (SETQ FONTX NIL))) - (OR FONTX (MAKEFONTSPEC FAMILY SIZE FACE ROTATION DEVICE]) - (\FONT.CHECKARGS1 [LAMBDA (SPEC STREAM NOERRORFLG) (* ; "Edited 22-Jul-2025 18:47 by rmk") (* ; "Edited 14-Jul-2025 19:40 by rmk") @@ -4699,44 +4583,44 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12489 22202 (CHARWIDTH 12499 . 13284) (CHARWIDTHY 13286 . 14803) (STRINGWIDTH 14805 . -15898) (\CHARWIDTH.DISPLAY 15900 . 16313) (\STRINGWIDTH.DISPLAY 16315 . 16739) (\STRINGWIDTH.GENERIC -16741 . 22200)) (22203 28723 (DEFAULTFONT 22213 . 23498) (FONTCLASS 23500 . 25662) (FONTCLASSUNPARSE -25664 . 26563) (FONTCLASSCOMPONENT 26565 . 27153) (SETFONTCLASSCOMPONENT 27155 . 27597) ( -GETFONTCLASSCOMPONENT 27599 . 28721)) (30436 54691 (FONTCREATE 30446 . 33691) (FONTCREATE1 33693 . -36308) (FONTCREATE.SLUGFD 36310 . 37792) (\FONT.CHECKARGS 37794 . 44543) (\FONT.CHECKARGS1 44545 . -49068) (\FONTCREATE1.NOFN 49070 . 49284) (FONTFILEP 49286 . 50174) (\READCHARSET 50176 . 54689)) ( -54692 61768 (\FONT.CHECKARGS 54702 . 61451) (\CHARSET.CHECK 61453 . 61766)) (61769 65029 ( -COERCEFONTSPEC 61779 . 65027)) (67099 68438 (MAKEFONTSPEC 67109 . 68436)) (68439 76616 (COMPLETE.FONT -68449 . 70972) (COMPLETEFONTP 70974 . 71597) (COMPLETE.CHARSET 71599 . 74284) (PRUNESLUGCSINFOS 74286 - . 75211) (MONOSPACEFONTP 75213 . 76614)) (76655 84576 (FONTASCENT 76665 . 77049) (FONTDESCENT 77051 - . 77536) (FONTHEIGHT 77538 . 77940) (FONTPROP 77942 . 83853) (\AVGCHARWIDTH 83855 . 84574)) (85233 -86141 (FONTDEVICEPROP 85243 . 86139)) (86187 87041 (EDITCHAR 86197 . 87039)) (87087 99277 ( -GETCHARBITMAP 87097 . 88221) (PUTCHARBITMAP 88223 . 90381) (\GETCHARBITMAP.CSINFO 90383 . 92399) ( -\PUTCHARBITMAP.CSINFO 92401 . 99275)) (99278 119758 (MOVECHARBITMAP 99288 . 101182) (MOVEFONTCHARS -101184 . 105144) (\MOVEFONTCHAR 105146 . 109989) (\MOVEFONTCHARS.SOURCEDATA 109991 . 116096) ( -\MAKESLUGCHAR 116098 . 118633) (SLUGCHARP.DISPLAY 118635 . 119756)) (120691 141264 (FONTFILES 120701 - . 122534) (\FINDFONTFILE 122536 . 124253) (\FONTFILENAMES 124255 . 125250) (\FONTFILENAME 125252 . -129235) (\FONTFILENAME.OLD 129237 . 132186) (\FONTFILENAME.NEW 132188 . 134445) (FONTSPECFROMFILENAME -134447 . 138983) (\FONTINFOFROMFILENAME.OLD 138985 . 141262)) (141531 177334 (FONTCOPY 141541 . 146604 -) (FONTP 146606 . 146905) (FONTUNPARSE 146907 . 148626) (SETFONTDESCRIPTOR 148628 . 150092) ( -\STREAMCHARWIDTH 150094 . 154258) (\COERCECHARSET 154260 . 156855) (\BUILDSLUGCSINFO 156857 . 160480) -(\FONTSYMBOL 160482 . 161132) (\DEVICESYMBOL 161134 . 162003) (\FONTFACE 162005 . 169195) ( -\FONTFACE.COLOR 169197 . 176117) (SETFONTCHARENCODING 176119 . 177332)) (177335 197634 (FONTSAVAILABLE - 177345 . 182699) (FONTEXISTS? 182701 . 186679) (\SEARCHFONTFILES 186681 . 189766) (FLUSHFONTCACHE -189768 . 191991) (FLUSHFONTSINCORE 191993 . 192190) (FINDFONTFILES 192192 . 195406) (SORTFONTSPECS -195408 . 197632)) (197635 201244 (MATCHFONTFACE 197645 . 198460) (MAKEFONTFACE 198462 . 199488) ( -FONTFACETOATOM 199490 . 201242)) (201875 202367 (\UNITWIDTHSVECTOR 201885 . 202365)) (216961 219028 ( -FONTDESCRIPTOR.DEFPRINT 216971 . 218550) (FONTCLASS.DEFPRINT 218552 . 219026)) (222857 225647 ( -\CREATEKERNELEMENT 222867 . 223225) (\FSETLEFTKERN 223227 . 223718) (\FGETLEFTKERN 223720 . 225645)) ( -225648 235284 (\CREATEFONT 225658 . 227097) (\CREATECHARSET 227099 . 231035) (\INSTALLCHARSETINFO -231037 . 234371) (\INSTALLCHARSETINFO.CHARENCODING 234373 . 235282)) (235606 236970 ( -\FONTRESETCHARWIDTHS 235616 . 236968)) (237600 247647 (\CREATEDISPLAYFONT 237610 . 239459) ( -\CREATECHARSET.DISPLAY 239461 . 245170) (\FONTEXISTS?.DISPLAY 245172 . 247645)) (247648 262513 ( -STRIKEFONT.FILEP 247658 . 248546) (STRIKEFONT.GETCHARSET 248548 . 254140) (WRITESTRIKEFONTFILE 254142 - . 259053) (STRIKECSINFO 259055 . 262511)) (262544 278861 (MAKEBOLD.CHARSET 262554 . 266203) ( -MAKEBOLD.CHAR 266205 . 267957) (MAKEITALIC.CHARSET 267959 . 271632) (MAKEITALIC.CHAR 271634 . 273980) -(\SFMAKEBOLD 273982 . 276206) (\SFMAKEITALIC 276208 . 278859)) (278862 283011 (\SFMAKEROTATEDFONT -278872 . 280273) (\SFROTATECSINFO 280275 . 280912) (\SFROTATEFONTCHARACTERS 280914 . 281294) ( -\SFROTATECSINFOOFFSETS 281296 . 283009)) (283012 284393 (\SFMAKECOLOR 283022 . 284391))))) + (FILEMAP (NIL (12144 21857 (CHARWIDTH 12154 . 12939) (CHARWIDTHY 12941 . 14458) (STRINGWIDTH 14460 . +15553) (\CHARWIDTH.DISPLAY 15555 . 15968) (\STRINGWIDTH.DISPLAY 15970 . 16394) (\STRINGWIDTH.GENERIC +16396 . 21855)) (21858 28378 (DEFAULTFONT 21868 . 23153) (FONTCLASS 23155 . 25317) (FONTCLASSUNPARSE +25319 . 26218) (FONTCLASSCOMPONENT 26220 . 26808) (SETFONTCLASSCOMPONENT 26810 . 27252) ( +GETFONTCLASSCOMPONENT 27254 . 28376)) (30091 47595 (FONTCREATE 30101 . 33346) (FONTCREATE1 33348 . +35963) (FONTCREATE.SLUGFD 35965 . 37447) (\FONT.CHECKARGS1 37449 . 41972) (\FONTCREATE1.NOFN 41974 . +42188) (FONTFILEP 42190 . 43078) (\READCHARSET 43080 . 47593)) (47596 54672 (\FONT.CHECKARGS 47606 . +54355) (\CHARSET.CHECK 54357 . 54670)) (54673 57933 (COERCEFONTSPEC 54683 . 57931)) (60003 61342 ( +MAKEFONTSPEC 60013 . 61340)) (61343 69520 (COMPLETE.FONT 61353 . 63876) (COMPLETEFONTP 63878 . 64501) +(COMPLETE.CHARSET 64503 . 67188) (PRUNESLUGCSINFOS 67190 . 68115) (MONOSPACEFONTP 68117 . 69518)) ( +69559 77480 (FONTASCENT 69569 . 69953) (FONTDESCENT 69955 . 70440) (FONTHEIGHT 70442 . 70844) ( +FONTPROP 70846 . 76757) (\AVGCHARWIDTH 76759 . 77478)) (78137 79045 (FONTDEVICEPROP 78147 . 79043)) ( +79091 79945 (EDITCHAR 79101 . 79943)) (79991 92181 (GETCHARBITMAP 80001 . 81125) (PUTCHARBITMAP 81127 + . 83285) (\GETCHARBITMAP.CSINFO 83287 . 85303) (\PUTCHARBITMAP.CSINFO 85305 . 92179)) (92182 112662 ( +MOVECHARBITMAP 92192 . 94086) (MOVEFONTCHARS 94088 . 98048) (\MOVEFONTCHAR 98050 . 102893) ( +\MOVEFONTCHARS.SOURCEDATA 102895 . 109000) (\MAKESLUGCHAR 109002 . 111537) (SLUGCHARP.DISPLAY 111539 + . 112660)) (113595 134168 (FONTFILES 113605 . 115438) (\FINDFONTFILE 115440 . 117157) (\FONTFILENAMES + 117159 . 118154) (\FONTFILENAME 118156 . 122139) (\FONTFILENAME.OLD 122141 . 125090) ( +\FONTFILENAME.NEW 125092 . 127349) (FONTSPECFROMFILENAME 127351 . 131887) (\FONTINFOFROMFILENAME.OLD +131889 . 134166)) (134435 170238 (FONTCOPY 134445 . 139508) (FONTP 139510 . 139809) (FONTUNPARSE +139811 . 141530) (SETFONTDESCRIPTOR 141532 . 142996) (\STREAMCHARWIDTH 142998 . 147162) ( +\COERCECHARSET 147164 . 149759) (\BUILDSLUGCSINFO 149761 . 153384) (\FONTSYMBOL 153386 . 154036) ( +\DEVICESYMBOL 154038 . 154907) (\FONTFACE 154909 . 162099) (\FONTFACE.COLOR 162101 . 169021) ( +SETFONTCHARENCODING 169023 . 170236)) (170239 190538 (FONTSAVAILABLE 170249 . 175603) (FONTEXISTS? +175605 . 179583) (\SEARCHFONTFILES 179585 . 182670) (FLUSHFONTCACHE 182672 . 184895) (FLUSHFONTSINCORE + 184897 . 185094) (FINDFONTFILES 185096 . 188310) (SORTFONTSPECS 188312 . 190536)) (190539 194148 ( +MATCHFONTFACE 190549 . 191364) (MAKEFONTFACE 191366 . 192392) (FONTFACETOATOM 192394 . 194146)) ( +194779 195271 (\UNITWIDTHSVECTOR 194789 . 195269)) (209865 211932 (FONTDESCRIPTOR.DEFPRINT 209875 . +211454) (FONTCLASS.DEFPRINT 211456 . 211930)) (215761 218551 (\CREATEKERNELEMENT 215771 . 216129) ( +\FSETLEFTKERN 216131 . 216622) (\FGETLEFTKERN 216624 . 218549)) (218552 228188 (\CREATEFONT 218562 . +220001) (\CREATECHARSET 220003 . 223939) (\INSTALLCHARSETINFO 223941 . 227275) ( +\INSTALLCHARSETINFO.CHARENCODING 227277 . 228186)) (228510 229874 (\FONTRESETCHARWIDTHS 228520 . +229872)) (230504 240551 (\CREATEDISPLAYFONT 230514 . 232363) (\CREATECHARSET.DISPLAY 232365 . 238074) +(\FONTEXISTS?.DISPLAY 238076 . 240549)) (240552 255417 (STRIKEFONT.FILEP 240562 . 241450) ( +STRIKEFONT.GETCHARSET 241452 . 247044) (WRITESTRIKEFONTFILE 247046 . 251957) (STRIKECSINFO 251959 . +255415)) (255448 271765 (MAKEBOLD.CHARSET 255458 . 259107) (MAKEBOLD.CHAR 259109 . 260861) ( +MAKEITALIC.CHARSET 260863 . 264536) (MAKEITALIC.CHAR 264538 . 266884) (\SFMAKEBOLD 266886 . 269110) ( +\SFMAKEITALIC 269112 . 271763)) (271766 275915 (\SFMAKEROTATEDFONT 271776 . 273177) (\SFROTATECSINFO +273179 . 273816) (\SFROTATEFONTCHARACTERS 273818 . 274198) (\SFROTATECSINFOOFFSETS 274200 . 275913)) ( +275916 277297 (\SFMAKECOLOR 275926 . 277295))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index 2dffa9b789a06cd1f9cc8d657a1e028b49377f4d..767c19f914d1cfabd66278e912f339a480b448a4 100644 GIT binary patch delta 981 zcmZuwOHb5L80F4GrE0=s1jG?OCTM1qA?@vR1`;Xl9cb*dwYS47EQ}k8F4T>2r3>Ru z1H)b5MiX`}H4P6pveT6@#=X&h;DU{b3vU@980qGo+ppg_=brEO<(tg<>&(hrcctvz zdsxOIRzcFLGOntX=G~F=MhS!h){hjGs;XBNqxm+E^ycSYItmY^DhWXACuv}|)4&SLyy0~=LIOIVQ3 z-k~zPlQLF^de~N~mwib|NLWpm&=mVIl4IA>Lr7pZ)1z!Tt#kA-U1q!KA$BQ~?=&b13u1bmKW1W*wXT?Z0og@yDJWjElzTKb3y4G4XFA1<5K{ArQJi_e5cF&Ni?+?N8EI;H`RRrI2=ea2i$t7L;iBNZ(fB$FU EFZ$;Nw*UYD delta 1240 zcmZuxL2ukd6kdBbX}b_a3QYqk$?K|+-Kv|~W3TO9B-n{Po3-k-jmH~hArej5rHzU< z2m%)*DmZ`yMUc(`xInoffuO+zafy29p(g}aj!67~-g*JVvzMe*gnjTg^X9$xz4yKG zS6>u9`?~PS$|Gjg-*~f16jB3KX(*&Y%&p639y2OXED`;lQBfLNy+O#q3}xKoqUuPbQB%`Uk}kfLs#hFldo*HCHh?WtuW1LJ5Q%`31`NU; zluyIcSdqOpoZo~C19)X)tv~3W9d2yGa4G2BWZWW|!v&%=? zbm!3d96sWO*-LUw6WefX3RJBQt0VPNKh9#Po8r!FyK4bz>cn)>V^0uF1@t{120lDFrMPbcr4J6%ZLH@}IHo^Hw*J~5tlX7Z1R+I<-x>0-LP z^TV?@CzZ+bDHcE9xH>=Y*o(B8t*7L@x3`mjcRTl2=HX_!G$U!#^ z==w+!kqWCc44Ll`&{YFCO6b|GtGPilX8)DgVjq`gRcE f`I-iS@AdG9gdM=4$00m8S19$t)XAwI|9<{o&(TD~