From 1569a27209016efdbb564b1cc04f061f7a4aaf5e Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Tue, 24 Feb 2026 10:06:24 -0800 Subject: [PATCH] \FONT.CHECKARGS extracts the right component if the font of a stream family is a fontclass (#2509) --- sources/FONT | 107 +++++++++++++++++++++++++--------------------- sources/FONT.LCOM | Bin 67946 -> 68211 bytes 2 files changed, 59 insertions(+), 48 deletions(-) diff --git a/sources/FONT b/sources/FONT index 1bafa48e..2859beb2 100644 --- a/sources/FONT +++ b/sources/FONT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 6-Feb-2026 23:44:25" {WMEDLEY}FONT.;671 276511 +(FILECREATED "19-Feb-2026 00:10:22" {WMEDLEY}FONT.;674 277477 :EDIT-BY rmk - :CHANGES-TO (FNS \FINDFONTFILE) + :CHANGES-TO (FNS \FONT.CHECKARGS1) - :PREVIOUS-DATE " 6-Feb-2026 00:24:55" {WMEDLEY}FONT.;670) + :PREVIOUS-DATE "14-Feb-2026 13:14:08" {WMEDLEY}FONT.;673) (PRETTYCOMPRINT FONTCOMS) @@ -608,7 +608,8 @@ FONTDESC]) (\FONT.CHECKARGS1 - [LAMBDA (SPEC STREAM NOERRORFLG) (* ; "Edited 22-Jul-2025 18:47 by rmk") + [LAMBDA (SPEC STREAM NOERRORFLG) (* ; "Edited 19-Feb-2026 00:03 by rmk") + (* ; "Edited 22-Jul-2025 18:47 by rmk") (* ; "Edited 14-Jul-2025 19:40 by rmk") (* ; "Edited 5-Jul-2025 14:16 by rmk") (* ; "Edited 29-Aug-91 12:19 by jds") @@ -620,6 +621,8 @@ (* ;; "STREAM denotes a device: NIL means DISPLAY, another atom is a device name itself, an IMAGESTREAM means its IMAGESTREAMTYPE. Anything else here maps to DISPLAY, but maybe that should be an illegal arg error, even of NOERRORFLG.") (DECLARE (GLOBALVARS DEFAULTFONT \GUARANTEEDDISPLAYFONT)) + (CL:WHEN (IMAGESTREAMP SPEC) + (SETQ SPEC (DSPFONT NIL SPEC))) (LET (FONT DEVICE TEMP) (CL:UNLESS SPEC (if DEFAULTFONT @@ -703,7 +706,8 @@ (CLOSEF? STRM))))]) (\READCHARSET - [LAMBDA (FONTSPEC CHARSET FONT) (* ; "Edited 6-Feb-2026 00:03 by rmk") + [LAMBDA (FONTSPEC CHARSET FONT) (* ; "Edited 14-Feb-2026 09:47 by rmk") + (* ; "Edited 6-Feb-2026 00:03 by rmk") (* ; "Edited 11-Nov-2025 14:30 by rmk") (* ; "Edited 2-Sep-2025 23:57 by rmk") (* ; "Edited 28-Aug-2025 23:17 by rmk") @@ -723,7 +727,8 @@ do (* ;; "We know that FILE exists and is the best source of information about charset--maybe none. We assume FILE is one of the valid formats, we open it separately for each format-type, and ensure it is closed on exit. We can't used CL:WITHOPEN-FILE because that doesn't exist in the loadup when the first font is created.") - (for FNS FAMILY in (FONTDEVICEPROP FONTSPEC 'CHARSETFNS) + (for FNS FAMILY in [OR (FONTDEVICEPROP FONTSPEC 'CHARSETFNS) + '((MEDLEYFONT MEDLEYFONT.FILEP MEDLEYFONT.GETCHARSET] do [RESETSAVE (SETQ STRM (OPENSTREAM FILE 'INPUT)) `(PROGN (CLOSEF? OLDVALUE] (CL:WHEN (CAR (NLSETQ (APPLY* (CADR FNS) @@ -3496,7 +3501,8 @@ FONT]) (\CREATECHARSET - [LAMBDA (CHARSET FONT) (* ; "Edited 25-Sep-2025 21:24 by rmk") + [LAMBDA (CHARSET FONT) (* ; "Edited 14-Feb-2026 13:12 by rmk") + (* ; "Edited 25-Sep-2025 21:24 by rmk") (* ; "Edited 2-Sep-2025 22:59 by rmk") (* ; "Edited 31-Aug-2025 14:36 by rmk") (* ; "Edited 28-Aug-2025 14:31 by rmk") @@ -3525,11 +3531,16 @@ (\ILLEGAL.ARG CHARSET)) (LET [(CSINFO (if (fetch (FONTDESCRIPTOR FONTCOMPLETEP) of FONT) then (\GETCHARSETINFO FONT CHARSET) - else (APPLY* (OR (CAR (GETMULTI IMAGESTREAMTYPES (fetch (FONTDESCRIPTOR + else (APPLY* [OR (CAR (GETMULTI IMAGESTREAMTYPES (fetch (FONTDESCRIPTOR FONTDEVICE) of FONT) 'CREATECHARSET)) - (FUNCTION \READCHARSET)) + (FUNCTION (LAMBDA (FONTSPEC FONT CHARSET) + (* ; + "No function: read or read-coerced-font") + (OR (\READCHARSET FONTSPEC CHARSET FONT) + (\READCHARSET (COERCEFONTSPEC FONTSPEC) + CHARSET FONT] (create FONTSPEC using (FONTPROP FONT 'DEVICESPEC)) FONT CHARSET] @@ -4485,43 +4496,43 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (11414 21127 (CHARWIDTH 11424 . 12209) (CHARWIDTHY 12211 . 13728) (STRINGWIDTH 13730 . -14823) (\CHARWIDTH.DISPLAY 14825 . 15238) (\STRINGWIDTH.DISPLAY 15240 . 15664) (\STRINGWIDTH.GENERIC -15666 . 21125)) (21128 27648 (DEFAULTFONT 21138 . 22423) (FONTCLASS 22425 . 24587) (FONTCLASSUNPARSE -24589 . 25488) (FONTCLASSCOMPONENT 25490 . 26078) (SETFONTCLASSCOMPONENT 26080 . 26522) ( -GETFONTCLASSCOMPONENT 26524 . 27646)) (29361 46989 (FONTCREATE 29371 . 32616) (FONTCREATE1 32618 . -35233) (FONTCREATE.SLUGFD 35235 . 36717) (\FONT.CHECKARGS1 36719 . 41242) (\FONTCREATE1.NOFN 41244 . -41458) (FONTFILEP 41460 . 42348) (\READCHARSET 42350 . 46987)) (46990 54066 (\FONT.CHECKARGS 47000 . -53749) (\CHARSET.CHECK 53751 . 54064)) (54067 60678 (COERCEFONTSPEC 54077 . 59989) ( -COERCEFONTSPEC.TARGETFACE 59991 . 60676)) (62873 64212 (MAKEFONTSPEC 62883 . 64210)) (64213 72390 ( -COMPLETE.FONT 64223 . 66746) (COMPLETEFONTP 66748 . 67371) (COMPLETE.CHARSET 67373 . 70058) ( -PRUNESLUGCSINFOS 70060 . 70985) (MONOSPACEFONTP 70987 . 72388)) (72429 80875 (FONTASCENT 72439 . 72823 -) (FONTDESCENT 72825 . 73310) (FONTHEIGHT 73312 . 73714) (FONTPROP 73716 . 80152) (\AVGCHARWIDTH 80154 - . 80873)) (81532 82440 (FONTDEVICEPROP 81542 . 82438)) (82486 83340 (EDITCHAR 82496 . 83338)) (83386 -95576 (GETCHARBITMAP 83396 . 84520) (PUTCHARBITMAP 84522 . 86680) (\GETCHARBITMAP.CSINFO 86682 . 88698 -) (\PUTCHARBITMAP.CSINFO 88700 . 95574)) (95577 116057 (MOVECHARBITMAP 95587 . 97481) (MOVEFONTCHARS -97483 . 101443) (\MOVEFONTCHAR 101445 . 106288) (\MOVEFONTCHARS.SOURCEDATA 106290 . 112395) ( -\MAKESLUGCHAR 112397 . 114932) (SLUGCHARP.DISPLAY 114934 . 116055)) (116715 128552 (FONTFILES 116725 - . 118558) (\FINDFONTFILE 118560 . 120537) (\FONTFILENAMES 120539 . 121099) (\FONTFILENAME 121101 . -124012) (FONTSPECFROMFILENAME 124014 . 128550)) (128553 165128 (FONTCOPY 128563 . 133626) (FONTP -133628 . 133927) (FONTUNPARSE 133929 . 135648) (SETFONTDESCRIPTOR 135650 . 137114) (\STREAMCHARWIDTH -137116 . 141280) (\COERCECHARSET 141282 . 144649) (\BUILDSLUGCSINFO 144651 . 148274) (\FONTSYMBOL -148276 . 148926) (\DEVICESYMBOL 148928 . 149797) (\FONTFACE 149799 . 156989) (\FONTFACE.COLOR 156991 - . 163911) (SETFONTCHARENCODING 163913 . 165126)) (165129 184790 (FONTSAVAILABLE 165139 . 170493) ( -FONTEXISTS? 170495 . 174034) (\SEARCHFONTFILES 174036 . 177121) (FLUSHFONTCACHE 177123 . 179346) ( -FINDFONTFILES 179348 . 182562) (SORTFONTSPECS 182564 . 184788)) (184791 188898 (MATCHFONTFACE 184801 - . 185616) (MAKEFONTFACE 185618 . 186644) (FONTFACETOATOM 186646 . 188896)) (189529 190021 ( -\UNITWIDTHSVECTOR 189539 . 190019)) (204650 206717 (FONTDESCRIPTOR.DEFPRINT 204660 . 206239) ( -FONTCLASS.DEFPRINT 206241 . 206715)) (210546 213336 (\CREATEKERNELEMENT 210556 . 210914) ( -\FSETLEFTKERN 210916 . 211407) (\FGETLEFTKERN 211409 . 213334)) (213337 224412 (\CREATEFONT 213347 . -216225) (\CREATECHARSET 216227 . 220163) (\INSTALLCHARSETINFO 220165 . 223499) ( -\INSTALLCHARSETINFO.CHARENCODING 223501 . 224410)) (224734 226098 (\FONTRESETCHARWIDTHS 224744 . -226096)) (226728 236769 (\CREATEDISPLAYFONT 226738 . 228587) (\CREATECHARSET.DISPLAY 228589 . 234298) -(\FONTEXISTS?.DISPLAY 234300 . 236767)) (236770 251635 (STRIKEFONT.FILEP 236780 . 237668) ( -STRIKEFONT.GETCHARSET 237670 . 243262) (WRITESTRIKEFONTFILE 243264 . 248175) (STRIKECSINFO 248177 . -251633)) (251666 267983 (MAKEBOLD.CHARSET 251676 . 255325) (MAKEBOLD.CHAR 255327 . 257079) ( -MAKEITALIC.CHARSET 257081 . 260754) (MAKEITALIC.CHAR 260756 . 263102) (\SFMAKEBOLD 263104 . 265328) ( -\SFMAKEITALIC 265330 . 267981)) (267984 272133 (\SFMAKEROTATEDFONT 267994 . 269395) (\SFROTATECSINFO -269397 . 270034) (\SFROTATEFONTCHARACTERS 270036 . 270416) (\SFROTATECSINFOOFFSETS 270418 . 272131)) ( -272134 273515 (\SFMAKECOLOR 272144 . 273513))))) + (FILEMAP (NIL (11417 21130 (CHARWIDTH 11427 . 12212) (CHARWIDTHY 12214 . 13731) (STRINGWIDTH 13733 . +14826) (\CHARWIDTH.DISPLAY 14828 . 15241) (\STRINGWIDTH.DISPLAY 15243 . 15667) (\STRINGWIDTH.GENERIC +15669 . 21128)) (21131 27651 (DEFAULTFONT 21141 . 22426) (FONTCLASS 22428 . 24590) (FONTCLASSUNPARSE +24592 . 25491) (FONTCLASSCOMPONENT 25493 . 26081) (SETFONTCLASSCOMPONENT 26083 . 26525) ( +GETFONTCLASSCOMPONENT 26527 . 27649)) (29364 47382 (FONTCREATE 29374 . 32619) (FONTCREATE1 32621 . +35236) (FONTCREATE.SLUGFD 35238 . 36720) (\FONT.CHECKARGS1 36722 . 41427) (\FONTCREATE1.NOFN 41429 . +41643) (FONTFILEP 41645 . 42533) (\READCHARSET 42535 . 47380)) (47383 54459 (\FONT.CHECKARGS 47393 . +54142) (\CHARSET.CHECK 54144 . 54457)) (54460 61071 (COERCEFONTSPEC 54470 . 60382) ( +COERCEFONTSPEC.TARGETFACE 60384 . 61069)) (63266 64605 (MAKEFONTSPEC 63276 . 64603)) (64606 72783 ( +COMPLETE.FONT 64616 . 67139) (COMPLETEFONTP 67141 . 67764) (COMPLETE.CHARSET 67766 . 70451) ( +PRUNESLUGCSINFOS 70453 . 71378) (MONOSPACEFONTP 71380 . 72781)) (72822 81268 (FONTASCENT 72832 . 73216 +) (FONTDESCENT 73218 . 73703) (FONTHEIGHT 73705 . 74107) (FONTPROP 74109 . 80545) (\AVGCHARWIDTH 80547 + . 81266)) (81925 82833 (FONTDEVICEPROP 81935 . 82831)) (82879 83733 (EDITCHAR 82889 . 83731)) (83779 +95969 (GETCHARBITMAP 83789 . 84913) (PUTCHARBITMAP 84915 . 87073) (\GETCHARBITMAP.CSINFO 87075 . 89091 +) (\PUTCHARBITMAP.CSINFO 89093 . 95967)) (95970 116450 (MOVECHARBITMAP 95980 . 97874) (MOVEFONTCHARS +97876 . 101836) (\MOVEFONTCHAR 101838 . 106681) (\MOVEFONTCHARS.SOURCEDATA 106683 . 112788) ( +\MAKESLUGCHAR 112790 . 115325) (SLUGCHARP.DISPLAY 115327 . 116448)) (117108 128945 (FONTFILES 117118 + . 118951) (\FINDFONTFILE 118953 . 120930) (\FONTFILENAMES 120932 . 121492) (\FONTFILENAME 121494 . +124405) (FONTSPECFROMFILENAME 124407 . 128943)) (128946 165521 (FONTCOPY 128956 . 134019) (FONTP +134021 . 134320) (FONTUNPARSE 134322 . 136041) (SETFONTDESCRIPTOR 136043 . 137507) (\STREAMCHARWIDTH +137509 . 141673) (\COERCECHARSET 141675 . 145042) (\BUILDSLUGCSINFO 145044 . 148667) (\FONTSYMBOL +148669 . 149319) (\DEVICESYMBOL 149321 . 150190) (\FONTFACE 150192 . 157382) (\FONTFACE.COLOR 157384 + . 164304) (SETFONTCHARENCODING 164306 . 165519)) (165522 185183 (FONTSAVAILABLE 165532 . 170886) ( +FONTEXISTS? 170888 . 174427) (\SEARCHFONTFILES 174429 . 177514) (FLUSHFONTCACHE 177516 . 179739) ( +FINDFONTFILES 179741 . 182955) (SORTFONTSPECS 182957 . 185181)) (185184 189291 (MATCHFONTFACE 185194 + . 186009) (MAKEFONTFACE 186011 . 187037) (FONTFACETOATOM 187039 . 189289)) (189922 190414 ( +\UNITWIDTHSVECTOR 189932 . 190412)) (205043 207110 (FONTDESCRIPTOR.DEFPRINT 205053 . 206632) ( +FONTCLASS.DEFPRINT 206634 . 207108)) (210939 213729 (\CREATEKERNELEMENT 210949 . 211307) ( +\FSETLEFTKERN 211309 . 211800) (\FGETLEFTKERN 211802 . 213727)) (213730 225378 (\CREATEFONT 213740 . +216618) (\CREATECHARSET 216620 . 221129) (\INSTALLCHARSETINFO 221131 . 224465) ( +\INSTALLCHARSETINFO.CHARENCODING 224467 . 225376)) (225700 227064 (\FONTRESETCHARWIDTHS 225710 . +227062)) (227694 237735 (\CREATEDISPLAYFONT 227704 . 229553) (\CREATECHARSET.DISPLAY 229555 . 235264) +(\FONTEXISTS?.DISPLAY 235266 . 237733)) (237736 252601 (STRIKEFONT.FILEP 237746 . 238634) ( +STRIKEFONT.GETCHARSET 238636 . 244228) (WRITESTRIKEFONTFILE 244230 . 249141) (STRIKECSINFO 249143 . +252599)) (252632 268949 (MAKEBOLD.CHARSET 252642 . 256291) (MAKEBOLD.CHAR 256293 . 258045) ( +MAKEITALIC.CHARSET 258047 . 261720) (MAKEITALIC.CHAR 261722 . 264068) (\SFMAKEBOLD 264070 . 266294) ( +\SFMAKEITALIC 266296 . 268947)) (268950 273099 (\SFMAKEROTATEDFONT 268960 . 270361) (\SFROTATECSINFO +270363 . 271000) (\SFROTATEFONTCHARACTERS 271002 . 271382) (\SFROTATECSINFOOFFSETS 271384 . 273097)) ( +273100 274481 (\SFMAKECOLOR 273110 . 274479))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index 547c50c3aac6f2fd105e3171956de44bbf7f456e..4d534cc76697fe8dd547bb1654233dc3b9321daf 100644 GIT binary patch delta 1965 zcmZuy&2QXP5YKJ`g{^1_1vP03ny!$V6=Zpze)filb?mpvl3jbT9g;{rv?W1AK!Tv+ zxGjI>rvxyigi>j{QWs&6G`&sjZMo4#OdHS|MEdP+ zxE-(f7zU#V0~&8p(IR#hrNT$2l?%f9`*LMww*B-BKKI{i*RuEBnTPX#UTTl7-p-`) zGsoF0xA+WI?s)EWdGxdVt~!(oI+%Zg7!-EKj|bTwP?SKo?{4Tg!E*Woup9w8ioysi z+W{{OJU0O;m>EDaR@g|Y&TKg4(AWKSpvpFlZ3aUlL$Wu}pyauvHr(>D8=j8$`s-m2 zECL9q8*B`KJ4G&xe}=m3j(jLV@|?boy{J1#5WYfaJKew!cVMWDubTnmFrP zo>N$I>JCB(Q{n`C-Ep^jNlu|)B8xC9sLI~22x?X)h$>lg$0_i0hoSvq#ZF&ez4n?t z>5!MF=SYy5f?LWgj$1VItja9$;+w*(ha=XKE5}ep<(wgf26E<@NSV#j2dhg%98S|l zSVrwk(6W|`q8f&=rwlS=uoQ)s*kQzA2dHDF940_*^e!+{IjPQ=EGmlQl=q7Al7!?M zV?deNR*ERj;vx-GxX$!H3rc+9Y~w)`P=~`$;PB|vJ0BeG*TKSJslz+RAAWRvbZ~SJ z-aY;pWr@U>?If|%8*A69T#VM%etoi9t)}4LTo_--H^uyoD`9*T!WH{Zg+ozNafEC{ z=h%soj3s55A)7e2mxPJlO>jB$A?$iy{4y|ULm$6@;o&kp84_5M&*7zr*NZa?9eAOS z8w>YeIXSfu>^T!$$a&Nkigr*YpcRBs-|c~8rQfs{tBR+WHWy|ok?Buus9Gxhr@hn$ zJOInfeeL)3UVi$gpUteo0XF|k*WA!afxXda)NbK|_tS^JxuXZ0kG^=qC4|uQ{*O1e zXBP3=m~F4S7qk0ge0g%o6ymcp%ed`x-y#-Ji925-MHzs2pgm9}gGMdr_C`mKPAbn$ PZk)m~&p4`me_Q+uaQyPO delta 1921 zcmZ`)&1)T16wjnZYYR$DH)$iBJVXsNVeaS5JSk>6b0-=5X689FuSuYkwkATTCZfgd zfLjsNaqqtn7_xBXR&gs`3gSX>Rd6G?@yth>d)2(fdvoTT^E*Vjj|_u%pV9{i6zo#eY&}cmBzx;~Nj>j{j<&iXY}HPM{6c z(*uXt5Ej$+4M>keocNonD3NzHkWbpNB3tm9pk!Ne~Lkd*bzddVJmc9L)n$>D(gKp!D>A0Y(9X{qu-$%O_e zFj^QF(}}+ef@p3PaL0kWn=?Q6(OHFqRo4N2TCR=;=bnbhsjEwbL#QHuHYs~g+dUT) z%W@X4G6FJhXl56XdBgx^E*mmuj?^$r2buZaoMER!b^VMp6GSf{Je%qSgIsUo%JpA5zyY&wyS)ro0fC(3p z+x^<3fMZywS(vrgG4&ILhZFVffuYhK9`H=`CkGGeH_?(s>Tjd4!wWf>R$W+To3OOqI!py9&VfHEvr_Gp zn2Lm*AShl1ii?rp6W%*KyIN3+-PPrGtPC0X21WZur9l?PX|RbW_+K`-hK3EA;0hQp z#DQ^|<%vH5*Q