1
0
mirror of synced 2026-04-16 16:59:24 +00:00

Compare commits

..

4 Commits

Author SHA1 Message Date
Matt Heffron
8474e63bc5 Merge branch 'master' into mth63--Misc_READ-BDF_fixes_and_performance_changes 2026-04-10 15:47:53 -07:00
Matt Heffron
76be925e0a Preliminary edits for writing MEDLEYDISPLAYFONT file with UNICODE vs. MCCS encoding.
Needs rmk175 (PR 2555) to enable 24 bit encodings.
2026-04-10 15:45:01 -07:00
Matt Heffron
bb53e497ce Merge branch 'master' into mth63--Misc_READ-BDF_fixes_and_performance_changes 2026-03-16 14:45:55 -07:00
Matt Heffron
a8a0313bd9 A few fixes and performance improvements 2026-02-24 23:46:23 -08:00
7 changed files with 461 additions and 365 deletions

View File

@@ -1,18 +1,21 @@
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10)
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "14-Mar-2021 20:40:30" 
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>GRAPHER.;5 214171
(FILECREATED "14-Apr-2026 22:19:19" {DSK}<home>frank>il>medley>library>GRAPHER.;3 215302
changes to%: (VARS GRAPHERCOMS)
:EDIT-BY "FGH"
previous date%: "14-May-2018 10:24:38"
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>GRAPHER.;4)
:CHANGES-TO (FNS DISPLAYLINK/RL DISPLAYLINK/LR DISPLAYLINK/BT DISPLAYLINK/TB)
:PREVIOUS-DATE "14-Mar-2021 20:40:30" {DSK}<home>frank>il>medley>library>GRAPHER.;1)
(* ; "
Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation.
")
(PRETTYCOMPRINT GRAPHERCOMS)
(RPAQQ GRAPHERCOMS
[(COMS (* ; "Graph Editing")
[(COMS (* ; "Graph Editing")
(FNS ADD/AND/DISPLAY/LINK APPLYTOSELECTEDNODE CALL.MOVENODEFN CHANGE.NODEFONT.SIZE
DEFAULT.ADDNODEFN DELETE/AND/DISPLAY/LINK DISPLAY/NAME DISPLAYGRAPH DISPLAYLINK
DISPLAYLINK/BT DISPLAYLINK/LR DISPLAYLINK/RL DISPLAYLINK/TB DISPLAYNODE
@@ -35,18 +38,18 @@
(CL:WHEN (GETD 'MODERNWINDOW.SETUP)
(MODERNWINDOW.SETUP 'APPLYTOSELECTEDNODE))]
(* ;; "Support for EDITSUBGRAPH and EDITREGION")
(* ;; "Support for EDITSUBGRAPH and EDITREGION")
(FNS EDITMOVEREGION EDITMOVESUBTREE NOT.TRACKCURSOR RECURSIVE.COLLECTDESCENDENTS
MOVEDESCENDENTS COLLECT.CHILD.NODES CREATE.NEW.NODEPOSITION
GETBOXPOSITION.FROMINITIALREGION COLLECTDESCENDENTS))
(COMS (* ;
 "functions for finding larger and smaller fonts")
(COMS (* ;
 "functions for finding larger and smaller fonts")
(FNS NEXTSIZEFONT DECREASING.FONT.LIST SCALE.FONT)
[DECLARE%: DONTEVAL@LOAD DOCOPY (VARS (DECREASING.FONT.LIST (DECREASING.FONT.LIST]
(GLOBALVARS DECREASING.FONT.LIST))
(* ;
 "functions for LAYOUTGRAPH And LAYOUTLATTICE")
(* ;
 "functions for LAYOUTGRAPH And LAYOUTLATTICE")
(FNS BRH/LAYOUT BRH/LAYOUT/DAUGHTERS BRH/OFFSET BRHC/INTERTREE/SPACE BRHC/LAYOUT
BRHC/LAYOUT/DAUGHTERS BRHC/LAYOUT/TERMINAL BRHC/OFFSET BRHL/LAYOUT BRHL/LAYOUT/DAUGHTERS
BRHL/MOVE/RIGHT BROWSE/LAYOUT/HORIZ BROWSE/LAYOUT/HORIZ/COMPACTLY BROWSE/LAYOUT/LATTICE
@@ -92,7 +95,7 @@
(LOCALVARS . T)
(RECORDS GRAPHNODE GRAPH)
(DECLARE%: DONTCOPY (MACROS HALF))
(COMS (* ; "Grapher image objects")
(COMS (* ; "Grapher image objects")
(FNS GRAPHERIMAGEFNS)
(FNS GRAPHERCOPYBUTTONEVENTFN GRAPHOBJ.FINDGRAPH)
(FNS ALIGNMENTNODE GRAPHOBJ.CHECKALIGN)
@@ -300,112 +303,96 @@
NIL])
(DISPLAYLINK/BT
[LAMBDA (TRANS GNB GNT WIDTH OPERATION STREAM PARAMS) (* ; "Edited 14-Apr-2026 22:08 by FGH")
[LAMBDA (TRANS GNB GNT WIDTH OPERATION STREAM PARAMS)
(* ; "Edited 29-Apr-94 13:59 by sybalsky")
(* draws a line from the bottom edge of GNB to the top edge of GNT translated by
 TRANS)
(* draws a line from the bottom edge of GNB to the top edge of GNT translated
 by TRANS)
(LET* [(FN (LISTGET PARAMS 'DRAWLINKFN))
(DFN (AND FN (GETD FN]
(if (AND FN (NOT DFN))
then (PROMPTPRINT (CONCAT "DISPLAYLINK: DRAWLINKFN " FN " NOT FOUND")))
(APPLY* (OR (AND DFN FN)
'DRAWLINE)
(IPLUS (fetch XCOORD of TRANS)
(fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNB)))
(IPLUS (fetch YCOORD of TRANS)
(SUB1 (GN/BOTTOM GNB)))
(IPLUS (fetch XCOORD of TRANS)
(fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNT)))
(IPLUS (fetch YCOORD of TRANS)
(ADD1 (GN/TOP GNT)))
(OR (LISTGET PARAMS 'LINEWIDTH)
WIDTH 1)
OPERATION STREAM (LISTGET PARAMS 'COLOR)
(LISTGET PARAMS 'DASHING)
PARAMS])
(APPLY* (OR (LISTGET PARAMS 'DRAWLINKFN)
'DRAWLINE)
(IPLUS (fetch XCOORD of TRANS)
(fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNB)))
(IPLUS (fetch YCOORD of TRANS)
(SUB1 (GN/BOTTOM GNB)))
(IPLUS (fetch XCOORD of TRANS)
(fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNT)))
(IPLUS (fetch YCOORD of TRANS)
(ADD1 (GN/TOP GNT)))
(OR (LISTGET PARAMS 'LINEWIDTH)
WIDTH 1)
OPERATION STREAM (LISTGET PARAMS 'COLOR)
(LISTGET PARAMS 'DASHING)
PARAMS])
(DISPLAYLINK/LR
[LAMBDA (TRANS GNL GNR WIDTH OPERATION STREAM PARAMS) (* ; "Edited 14-Apr-2026 22:09 by FGH")
[LAMBDA (TRANS GNL GNR WIDTH OPERATION STREAM PARAMS)
(* ; "Edited 29-Apr-94 13:59 by sybalsky")
(* draws a line from the left edge of GNL to the right edge of GNR, translated by
 TRANS)
(* draws a line from the left edge of GNL to the right edge of GNR, translated
 by TRANS)
(LET* [(FN (LISTGET PARAMS 'DRAWLINKFN))
(DFN (AND FN (GETD FN]
(if (AND FN (NOT DFN))
then (PROMPTPRINT (CONCAT "DISPLAYLINK: DRAWLINKFN " FN " NOT FOUND")))
(APPLY* (OR (AND DFN FN)
'DRAWLINE)
(IPLUS (fetch XCOORD of TRANS)
(SUB1 (GN/LEFT GNL)))
(IPLUS (fetch YCOORD of TRANS)
(fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNL)))
(IPLUS (fetch XCOORD of TRANS)
(ADD1 (GN/RIGHT GNR)))
(IPLUS (fetch YCOORD of TRANS)
(fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNR)))
(OR (LISTGET PARAMS 'LINEWIDTH)
WIDTH 1)
OPERATION STREAM (LISTGET PARAMS 'COLOR)
(LISTGET PARAMS 'DASHING)
PARAMS])
(APPLY* (OR (LISTGET PARAMS 'DRAWLINKFN)
'DRAWLINE)
(IPLUS (fetch XCOORD of TRANS)
(SUB1 (GN/LEFT GNL)))
(IPLUS (fetch YCOORD of TRANS)
(fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNL)))
(IPLUS (fetch XCOORD of TRANS)
(ADD1 (GN/RIGHT GNR)))
(IPLUS (fetch YCOORD of TRANS)
(fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNR)))
(OR (LISTGET PARAMS 'LINEWIDTH)
WIDTH 1)
OPERATION STREAM (LISTGET PARAMS 'COLOR)
(LISTGET PARAMS 'DASHING)
PARAMS])
(DISPLAYLINK/RL
[LAMBDA (TRANS GNR GNL WIDTH OPERATION STREAM PARAMS) (* ; "Edited 14-Apr-2026 22:09 by FGH")
[LAMBDA (TRANS GNR GNL WIDTH OPERATION STREAM PARAMS)
(* ; "Edited 29-Apr-94 13:59 by sybalsky")
(* draws a line from the right edge of GNR, to the left edge of GNL translated by
 TRANS)
(* draws a line from the right edge of GNR, to the left edge of GNL translated
 by TRANS)
(LET* [(FN (LISTGET PARAMS 'DRAWLINKFN))
(DFN (AND FN (GETD FN]
(if (AND FN (NOT DFN))
then (PROMPTPRINT (CONCAT "DISPLAYLINK: DRAWLINKFN " FN " NOT FOUND")))
(APPLY* (OR (AND DFN FN)
'DRAWLINE)
(IPLUS (fetch XCOORD of TRANS)
(ADD1 (GN/RIGHT GNR)))
(IPLUS (fetch YCOORD of TRANS)
(fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNR)))
(IPLUS (fetch XCOORD of TRANS)
(SUB1 (GN/LEFT GNL)))
(IPLUS (fetch YCOORD of TRANS)
(fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNL)))
(OR (LISTGET PARAMS 'LINEWIDTH)
WIDTH 1)
OPERATION STREAM (LISTGET PARAMS 'COLOR)
(LISTGET PARAMS 'DASHING)
PARAMS])
(APPLY* (OR (LISTGET PARAMS 'DRAWLINKFN)
'DRAWLINE)
(IPLUS (fetch XCOORD of TRANS)
(ADD1 (GN/RIGHT GNR)))
(IPLUS (fetch YCOORD of TRANS)
(fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNR)))
(IPLUS (fetch XCOORD of TRANS)
(SUB1 (GN/LEFT GNL)))
(IPLUS (fetch YCOORD of TRANS)
(fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNL)))
(OR (LISTGET PARAMS 'LINEWIDTH)
WIDTH 1)
OPERATION STREAM (LISTGET PARAMS 'COLOR)
(LISTGET PARAMS 'DASHING)
PARAMS])
(DISPLAYLINK/TB
[LAMBDA (TRANS GNT GNB WIDTH OPERATION STREAM PARAMS) (* ; "Edited 14-Apr-2026 22:09 by FGH")
[LAMBDA (TRANS GNT GNB WIDTH OPERATION STREAM PARAMS)
(* ; "Edited 29-Apr-94 13:59 by sybalsky")
(* draws a line from the top edge of GNT to the bottom edge of GNR, translated by
 TRANS)
(* draws a line from the top edge of GNT to the bottom edge of GNR, translated
 by TRANS)
(LET* [(FN (LISTGET PARAMS 'DRAWLINKFN))
(DFN (AND FN (GETD FN]
(if (AND FN (NOT DFN))
then (PROMPTPRINT (CONCAT "DISPLAYLINK: DRAWLINKFN " FN " NOT FOUND")))
(APPLY* (OR (AND DFN FN)
'DRAWLINE)
(IPLUS (fetch XCOORD of TRANS)
(fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNT)))
(IPLUS (fetch YCOORD of TRANS)
(ADD1 (GN/TOP GNT)))
(IPLUS (fetch XCOORD of TRANS)
(fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNB)))
(IPLUS (fetch YCOORD of TRANS)
(SUB1 (GN/BOTTOM GNB)))
(OR (LISTGET PARAMS 'LINEWIDTH)
WIDTH 1)
OPERATION STREAM (LISTGET PARAMS 'COLOR)
(LISTGET PARAMS 'DASHING)
PARAMS])
(APPLY* (OR (LISTGET PARAMS 'DRAWLINKFN)
'DRAWLINE)
(IPLUS (fetch XCOORD of TRANS)
(fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNT)))
(IPLUS (fetch YCOORD of TRANS)
(ADD1 (GN/TOP GNT)))
(IPLUS (fetch XCOORD of TRANS)
(fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNB)))
(IPLUS (fetch YCOORD of TRANS)
(SUB1 (GN/BOTTOM GNB)))
(OR (LISTGET PARAMS 'LINEWIDTH)
WIDTH 1)
OPERATION STREAM (LISTGET PARAMS 'COLOR)
(LISTGET PARAMS 'DASHING)
PARAMS])
(DISPLAYNODE
[LAMBDA (NODE TRANS STREAM G TOSONLY) (* kvl "10-Aug-84 19:08")
@@ -2027,7 +2014,7 @@
of N])
)
(* Was MODERNIZE loaded before?)
(* Was MODERNIZE loaded before?)
(CL:WHEN (GETD 'MODERNWINDOW.SETUP)
(MODERNWINDOW.SETUP 'APPLYTOSELECTEDNODE))
@@ -3088,7 +3075,7 @@
(RPAQQ GRAPH/HARDCOPY/FORMAT (MODE PORTRAIT PAGENUMBERS T TRANS NIL))
(RPAQ? DEFAULT.GRAPH.WINDOWSIZE (LIST (TIMES SCREENWIDTH 0.7)
(TIMES SCREENHEIGHT 0.4)))
(TIMES SCREENHEIGHT 0.4)))
(RPAQ? EDITGRAPHMENUCOMMANDS
'((Move% Node 'MOVENODE "Moves a single node in the graph." (SUBITEMS (|Move Single Node|
@@ -3126,19 +3113,19 @@
(DECLARE%: EVAL@COMPILE
(RECORD GRAPHNODE (NODEID NODEPOSITION NODELABELBITMAP NIL NODELABELSHADE NODEWIDTH NODEHEIGHT
TONODES FROMNODES NODEFONT NODELABEL NODEBORDER)
NODEBORDER _ DEFAULT.GRAPH.NODEBORDER NODELABELSHADE _ DEFAULT.GRAPH.NODELABELSHADE
NODEFONT _ DEFAULT.GRAPH.NODEFONT)
TONODES FROMNODES NODEFONT NODELABEL NODEBORDER)
NODEBORDER _ DEFAULT.GRAPH.NODEBORDER NODELABELSHADE _
DEFAULT.GRAPH.NODELABELSHADE NODEFONT _ DEFAULT.GRAPH.NODEFONT)
(RECORD GRAPH (GRAPHNODES SIDESFLG DIRECTEDFLG GRAPH.MOVENODEFN GRAPH.ADDNODEFN GRAPH.DELETENODEFN
GRAPH.ADDLINKFN GRAPH.DELETELINKFN GRAPH.FONTCHANGEFN GRAPH.INVERTBORDERFN
GRAPH.INVERTLABELFN GRAPH.CHANGELABELFN . GRAPH.PROPS))
(RECORD GRAPH (GRAPHNODES SIDESFLG DIRECTEDFLG GRAPH.MOVENODEFN GRAPH.ADDNODEFN
GRAPH.DELETENODEFN GRAPH.ADDLINKFN GRAPH.DELETELINKFN GRAPH.FONTCHANGEFN
GRAPH.INVERTBORDERFN GRAPH.INVERTLABELFN GRAPH.CHANGELABELFN . GRAPH.PROPS))
)
(DECLARE%: DONTCOPY
(DECLARE%: EVAL@COMPILE
(PUTPROPS HALF MACRO ((X)
(LRSH X 1)))
(LRSH X 1)))
)
)
@@ -3802,59 +3789,61 @@
)
(ADDTOVAR IMAGEOBJGETFNS (GRAPHOBJ.GETFN))
(PUTPROPS GRAPHER COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1988 1989 1990 1991
1992 1993 1994 2018 2021))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (7149 112538 (ADD/AND/DISPLAY/LINK 7159 . 7861) (APPLYTOSELECTEDNODE 7863 . 8351) (
CALL.MOVENODEFN 8353 . 8702) (CHANGE.NODEFONT.SIZE 8704 . 10016) (DEFAULT.ADDNODEFN 10018 . 10816) (
DELETE/AND/DISPLAY/LINK 10818 . 12385) (DISPLAY/NAME 12387 . 12558) (DISPLAYGRAPH 12560 . 14931) (
DISPLAYLINK 14933 . 17486) (DISPLAYLINK/BT 17488 . 18845) (DISPLAYLINK/LR 18847 . 20205) (
DISPLAYLINK/RL 20207 . 21565) (DISPLAYLINK/TB 21567 . 22925) (DISPLAYNODE 22927 . 23275) (
ERASE/GRAPHNODE 23277 . 24384) (DISPLAYNODE 24386 . 24734) (DISPLAYNODELINKS 24736 . 25880) (
DRAW/GRAPHNODE/BORDER 25882 . 26801) (DRAWAREABOX 26803 . 28004) (EDITADDLINK 28006 . 28404) (
EDITADDNODE 28406 . 30495) (EDITAPPLYTOLINK 30497 . 32576) (EDITCHANGEFONT 32578 . 33750) (
EDITCHANGELABEL 33752 . 35293) (EDITDELETELINK 35295 . 35701) (EDITDELETENODE 35703 . 38404) (
EDITGRAPH 38406 . 38473) (EDITGRAPH1 38475 . 39233) (EDITGRAPH2 39235 . 40966) (EDITMOVENODE 40968 .
42545) (EDITTOGGLEBORDER 42547 . 43843) (EDITTOGGLELABEL 43845 . 45142) (FILL/GRAPHNODE/LABEL 45144 .
45972) (FIX/SCALE 45974 . 46530) (FLIPNODE 46532 . 47136) (FONTNAMELIST 47138 . 47357) (FROMLINKS
47359 . 47529) (GETNODEFROMID 47531 . 48550) (GN/BOTTOM 48552 . 48828) (GN/LEFT 48830 . 49103) (
GN/RIGHT 49105 . 49496) (GN/TOP 49498 . 49922) (GRAPHADDLINK 49924 . 50483) (GRAPHADDNODE 50485 .
51274) (GRAPHBUTTONEVENTFN 51276 . 53456) (GRAPHCHANGELABEL 53458 . 53901) (GRAPHDELETELINK 53903 .
55211) (GRAPHDELETENODE 55213 . 55745) (GRAPHEDITCOMMANDFN 55747 . 57131) (GRAPHEDITEVENTFN 57133 .
57844) (GRAPHER/CENTERPRINTINAREA 57846 . 58610) (GRAPHERPROP 58612 . 59156) (GRAPHNODE/BORDER/WIDTH
59158 . 59679) (GRAPHREGION 59681 . 60850) (HARDCOPYGRAPH 60852 . 68234) (INTERSECT/REGIONP/LBWH 68236
. 69512) (INVERTED/GRAPHNODE/BORDER 69514 . 70098) (INVERTED/SHADE/FOR/GRAPHER 70100 . 70732) (
LAYOUT/POSITION 70734 . 70913) (LINKPARAMETERS 70915 . 71367) (MAX/RIGHT 71369 . 71571) (MAX/TOP 71573
. 71771) (MEASUREGRAPHNODE 71773 . 72222) (MEMBTONODES 72224 . 72749) (MIN/BOTTOM 72751 . 73132) (
MIN/LEFT 73134 . 73509) (MOVENODE 73511 . 74754) (NODECREATE 74756 . 75536) (NODELST/AS/MENU 75538 .
77138) (NODEREGION 77140 . 77600) (PRINTDISPLAYNODE 77602 . 82660) (PROMPTINWINDOW 82662 . 85471) (
READ/NODE 85473 . 86587) (REDISPLAYGRAPH 86589 . 87031) (REMOVETONODES 87033 . 87554) (
RESET/NODE/BORDER 87556 . 89343) (RESET/NODE/LABELSHADE 89345 . 90860) (SCALE/GRAPH 90862 . 97148) (
SCALE/GRAPHNODE/BORDER 97150 . 97845) (SCALE/TONODES 97847 . 98728) (SET/LABEL/SIZE 98730 . 101676) (
SET/LAYOUT/POSITION 101678 . 102163) (SHOWGRAPH 102165 . 103964) (SIZE/GRAPH/WINDOW 103966 . 107450) (
TOGGLE/DIRECTEDFLG 107452 . 108082) (TOGGLE/SIDESFLG 108084 . 108572) (TOLINKS 108574 . 108740) (
TRACKCURSOR 108742 . 110149) (TRACKNODE 110151 . 110787) (TRANSGRAPH 110789 . 112536)) (112779 129396
(EDITMOVEREGION 112789 . 116592) (EDITMOVESUBTREE 116594 . 118371) (NOT.TRACKCURSOR 118373 . 121351) (
RECURSIVE.COLLECTDESCENDENTS 121353 . 122841) (MOVEDESCENDENTS 122843 . 124905) (COLLECT.CHILD.NODES
124907 . 126023) (CREATE.NEW.NODEPOSITION 126025 . 126565) (GETBOXPOSITION.FROMINITIALREGION 126567 .
128039) (COLLECTDESCENDENTS 128041 . 129394)) (129460 131749 (NEXTSIZEFONT 129470 . 130660) (
DECREASING.FONT.LIST 130662 . 130988) (SCALE.FONT 130990 . 131747)) (131973 171125 (BRH/LAYOUT 131983
. 133727) (BRH/LAYOUT/DAUGHTERS 133729 . 134675) (BRH/OFFSET 134677 . 135355) (BRHC/INTERTREE/SPACE
135357 . 136675) (BRHC/LAYOUT 136677 . 138533) (BRHC/LAYOUT/DAUGHTERS 138535 . 141489) (
BRHC/LAYOUT/TERMINAL 141491 . 142172) (BRHC/OFFSET 142174 . 143070) (BRHL/LAYOUT 143072 . 145296) (
BRHL/LAYOUT/DAUGHTERS 145298 . 147056) (BRHL/MOVE/RIGHT 147058 . 148201) (BROWSE/LAYOUT/HORIZ 148203
. 148927) (BROWSE/LAYOUT/HORIZ/COMPACTLY 148929 . 151735) (BROWSE/LAYOUT/LATTICE 151737 . 152593) (
BRV/OFFSET 152595 . 153458) (EXTEND/TRANSITION/CHAIN 153460 . 154731) (FOREST/BREAK/CYCLES 154733 .
155663) (INIT/NODES/FOR/LAYOUT 155665 . 157160) (INTERPRET/MARK/FORMAT 157162 . 158429) (
LATTICE/BREAK/CYCLES 158431 . 159135) (LAYOUTFOREST 159137 . 159838) (LAYOUTGRAPH 159840 . 163307) (
LAYOUTLATTICE 163309 . 164762) (LAYOUTSEXPR 164764 . 165835) (LAYOUTSEXPR1 165837 . 166539) (
MARK/GRAPH/NODE 166541 . 167271) (NEW/INSTANCE/OF/GRAPHNODE 167273 . 168642) (RAISE/TRANSITION/CHAIN
168644 . 169045) (REFLECT/GRAPH/DIAGONALLY 169047 . 169776) (REFLECT/GRAPH/HORIZONTALLY 169778 .
170304) (REFLECT/GRAPH/VERTICALLY 170306 . 170830) (SWITCH/NODE/HEIGHT/WIDTH 170832 . 171123)) (174438
175789 (GRAPHERIMAGEFNS 174448 . 175787)) (175790 177518 (GRAPHERCOPYBUTTONEVENTFN 175800 . 176779) (
GRAPHOBJ.FINDGRAPH 176781 . 177516)) (177519 180139 (ALIGNMENTNODE 177529 . 178951) (
GRAPHOBJ.CHECKALIGN 178953 . 180137)) (180140 195990 (GRAPHEROBJ 180150 . 181896) (
GRAPHOBJ.BUTTONEVENTINFN 181898 . 183325) (GRAPHOBJ.COPYBUTTONEVENTFN 183327 . 183764) (
GRAPHOBJ.COPYFN 183766 . 184690) (GRAPHOBJ.DISPLAYFN 184692 . 187507) (GRAPHOBJ.GETALIGN 187509 .
188248) (GRAPHOBJ.GETFN 188250 . 189755) (GRAPHOBJ.IMAGEBOXFN 189757 . 193773) (GRAPHOBJ.PUTALIGN
193775 . 194605) (GRAPHOBJ.PUTFN 194607 . 195988)) (195991 215143 (COPYGRAPH 196001 . 197549) (
DUMPGRAPH 197551 . 207807) (READGRAPH 207809 . 215141)))))
(FILEMAP (NIL (7195 111244 (ADD/AND/DISPLAY/LINK 7205 . 7907) (APPLYTOSELECTEDNODE 7909 . 8397) (
CALL.MOVENODEFN 8399 . 8748) (CHANGE.NODEFONT.SIZE 8750 . 10062) (DEFAULT.ADDNODEFN 10064 . 10862) (
DELETE/AND/DISPLAY/LINK 10864 . 12431) (DISPLAY/NAME 12433 . 12604) (DISPLAYGRAPH 12606 . 14977) (
DISPLAYLINK 14979 . 17532) (DISPLAYLINK/BT 17534 . 18556) (DISPLAYLINK/LR 18558 . 19581) (
DISPLAYLINK/RL 19583 . 20606) (DISPLAYLINK/TB 20608 . 21631) (DISPLAYNODE 21633 . 21981) (
ERASE/GRAPHNODE 21983 . 23090) (DISPLAYNODE 23092 . 23440) (DISPLAYNODELINKS 23442 . 24586) (
DRAW/GRAPHNODE/BORDER 24588 . 25507) (DRAWAREABOX 25509 . 26710) (EDITADDLINK 26712 . 27110) (
EDITADDNODE 27112 . 29201) (EDITAPPLYTOLINK 29203 . 31282) (EDITCHANGEFONT 31284 . 32456) (
EDITCHANGELABEL 32458 . 33999) (EDITDELETELINK 34001 . 34407) (EDITDELETENODE 34409 . 37110) (
EDITGRAPH 37112 . 37179) (EDITGRAPH1 37181 . 37939) (EDITGRAPH2 37941 . 39672) (EDITMOVENODE 39674 .
41251) (EDITTOGGLEBORDER 41253 . 42549) (EDITTOGGLELABEL 42551 . 43848) (FILL/GRAPHNODE/LABEL 43850 .
44678) (FIX/SCALE 44680 . 45236) (FLIPNODE 45238 . 45842) (FONTNAMELIST 45844 . 46063) (FROMLINKS
46065 . 46235) (GETNODEFROMID 46237 . 47256) (GN/BOTTOM 47258 . 47534) (GN/LEFT 47536 . 47809) (
GN/RIGHT 47811 . 48202) (GN/TOP 48204 . 48628) (GRAPHADDLINK 48630 . 49189) (GRAPHADDNODE 49191 .
49980) (GRAPHBUTTONEVENTFN 49982 . 52162) (GRAPHCHANGELABEL 52164 . 52607) (GRAPHDELETELINK 52609 .
53917) (GRAPHDELETENODE 53919 . 54451) (GRAPHEDITCOMMANDFN 54453 . 55837) (GRAPHEDITEVENTFN 55839 .
56550) (GRAPHER/CENTERPRINTINAREA 56552 . 57316) (GRAPHERPROP 57318 . 57862) (GRAPHNODE/BORDER/WIDTH
57864 . 58385) (GRAPHREGION 58387 . 59556) (HARDCOPYGRAPH 59558 . 66940) (INTERSECT/REGIONP/LBWH 66942
. 68218) (INVERTED/GRAPHNODE/BORDER 68220 . 68804) (INVERTED/SHADE/FOR/GRAPHER 68806 . 69438) (
LAYOUT/POSITION 69440 . 69619) (LINKPARAMETERS 69621 . 70073) (MAX/RIGHT 70075 . 70277) (MAX/TOP 70279
. 70477) (MEASUREGRAPHNODE 70479 . 70928) (MEMBTONODES 70930 . 71455) (MIN/BOTTOM 71457 . 71838) (
MIN/LEFT 71840 . 72215) (MOVENODE 72217 . 73460) (NODECREATE 73462 . 74242) (NODELST/AS/MENU 74244 .
75844) (NODEREGION 75846 . 76306) (PRINTDISPLAYNODE 76308 . 81366) (PROMPTINWINDOW 81368 . 84177) (
READ/NODE 84179 . 85293) (REDISPLAYGRAPH 85295 . 85737) (REMOVETONODES 85739 . 86260) (
RESET/NODE/BORDER 86262 . 88049) (RESET/NODE/LABELSHADE 88051 . 89566) (SCALE/GRAPH 89568 . 95854) (
SCALE/GRAPHNODE/BORDER 95856 . 96551) (SCALE/TONODES 96553 . 97434) (SET/LABEL/SIZE 97436 . 100382) (
SET/LAYOUT/POSITION 100384 . 100869) (SHOWGRAPH 100871 . 102670) (SIZE/GRAPH/WINDOW 102672 . 106156) (
TOGGLE/DIRECTEDFLG 106158 . 106788) (TOGGLE/SIDESFLG 106790 . 107278) (TOLINKS 107280 . 107446) (
TRACKCURSOR 107448 . 108855) (TRACKNODE 108857 . 109493) (TRANSGRAPH 109495 . 111242)) (111485 128102
(EDITMOVEREGION 111495 . 115298) (EDITMOVESUBTREE 115300 . 117077) (NOT.TRACKCURSOR 117079 . 120057) (
RECURSIVE.COLLECTDESCENDENTS 120059 . 121547) (MOVEDESCENDENTS 121549 . 123611) (COLLECT.CHILD.NODES
123613 . 124729) (CREATE.NEW.NODEPOSITION 124731 . 125271) (GETBOXPOSITION.FROMINITIALREGION 125273 .
126745) (COLLECTDESCENDENTS 126747 . 128100)) (128166 130455 (NEXTSIZEFONT 128176 . 129366) (
DECREASING.FONT.LIST 129368 . 129694) (SCALE.FONT 129696 . 130453)) (130679 169831 (BRH/LAYOUT 130689
. 132433) (BRH/LAYOUT/DAUGHTERS 132435 . 133381) (BRH/OFFSET 133383 . 134061) (BRHC/INTERTREE/SPACE
134063 . 135381) (BRHC/LAYOUT 135383 . 137239) (BRHC/LAYOUT/DAUGHTERS 137241 . 140195) (
BRHC/LAYOUT/TERMINAL 140197 . 140878) (BRHC/OFFSET 140880 . 141776) (BRHL/LAYOUT 141778 . 144002) (
BRHL/LAYOUT/DAUGHTERS 144004 . 145762) (BRHL/MOVE/RIGHT 145764 . 146907) (BROWSE/LAYOUT/HORIZ 146909
. 147633) (BROWSE/LAYOUT/HORIZ/COMPACTLY 147635 . 150441) (BROWSE/LAYOUT/LATTICE 150443 . 151299) (
BRV/OFFSET 151301 . 152164) (EXTEND/TRANSITION/CHAIN 152166 . 153437) (FOREST/BREAK/CYCLES 153439 .
154369) (INIT/NODES/FOR/LAYOUT 154371 . 155866) (INTERPRET/MARK/FORMAT 155868 . 157135) (
LATTICE/BREAK/CYCLES 157137 . 157841) (LAYOUTFOREST 157843 . 158544) (LAYOUTGRAPH 158546 . 162013) (
LAYOUTLATTICE 162015 . 163468) (LAYOUTSEXPR 163470 . 164541) (LAYOUTSEXPR1 164543 . 165245) (
MARK/GRAPH/NODE 165247 . 165977) (NEW/INSTANCE/OF/GRAPHNODE 165979 . 167348) (RAISE/TRANSITION/CHAIN
167350 . 167751) (REFLECT/GRAPH/DIAGONALLY 167753 . 168482) (REFLECT/GRAPH/HORIZONTALLY 168484 .
169010) (REFLECT/GRAPH/VERTICALLY 169012 . 169536) (SWITCH/NODE/HEIGHT/WIDTH 169538 . 169829)) (173177
174528 (GRAPHERIMAGEFNS 173187 . 174526)) (174529 176257 (GRAPHERCOPYBUTTONEVENTFN 174539 . 175518) (
GRAPHOBJ.FINDGRAPH 175520 . 176255)) (176258 178878 (ALIGNMENTNODE 176268 . 177690) (
GRAPHOBJ.CHECKALIGN 177692 . 178876)) (178879 194729 (GRAPHEROBJ 178889 . 180635) (
GRAPHOBJ.BUTTONEVENTINFN 180637 . 182064) (GRAPHOBJ.COPYBUTTONEVENTFN 182066 . 182503) (
GRAPHOBJ.COPYFN 182505 . 183429) (GRAPHOBJ.DISPLAYFN 183431 . 186246) (GRAPHOBJ.GETALIGN 186248 .
186987) (GRAPHOBJ.GETFN 186989 . 188494) (GRAPHOBJ.IMAGEBOXFN 188496 . 192512) (GRAPHOBJ.PUTALIGN
192514 . 193344) (GRAPHOBJ.PUTFN 193346 . 194727)) (194730 213882 (COPYGRAPH 194740 . 196288) (
DUMPGRAPH 196290 . 206546) (READGRAPH 206548 . 213880)))))
STOP

Binary file not shown.

View File

@@ -1,13 +1,13 @@
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10)
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "16-Mar-2026 23:19:02" {WMEDLEY}<lispusers>EDITFONT.;42 26474
(FILECREATED "12-Oct-2025 17:39:29" {WMEDLEY}<lispusers>EDITFONT.;41 26261
:EDIT-BY rmk
:CHANGES-TO (FNS EDITFONT)
(RECORDS CHARITEM)
:CHANGES-TO (RECORDS CHARITEM)
(FNS EF.SAVE)
:PREVIOUS-DATE "12-Oct-2025 17:39:29" {WMEDLEY}<lispusers>EDITFONT.;41)
:PREVIOUS-DATE " 7-Oct-2025 14:56:00" {WMEDLEY}<lispusers>EDITFONT.;40)
(PRETTYCOMPRINT EDITFONTCOMS)
@@ -429,8 +429,7 @@
(RETURN FONT])
(EDITFONT
[LAMBDA (FONT CHARSET ROWMAJOR NCOLUMNS TITLETAG) (* ; "Edited 16-Mar-2026 23:17 by rmk")
(* ; "Edited 7-Oct-2025 14:55 by rmk")
[LAMBDA (FONT CHARSET ROWMAJOR NCOLUMNS TITLETAG) (* ; "Edited 7-Oct-2025 14:55 by rmk")
(* ; "Edited 5-Oct-2025 15:06 by rmk")
(* ; "Edited 4-Sep-2025 09:27 by rmk")
(* ; "Edited 29-Aug-2025 22:34 by rmk")
@@ -441,8 +440,6 @@
(* kbr%: "21-Oct-85 15:35")
(* kbr%: "21-Oct-85 15:35")
(SETQ FONT (FONTCREATE FONT))
(CL:UNLESS (EQ 'DISPLAY (FONTPROP FONT 'DEVICE))
(ERROR FONT " is not a display font"))
(SETQ CHARSET (OR (CHARSET.DECODE CHARSET)
0))
(LET (CHARITEMS MENU TITLE HEIGHT WIDTH REGION POS WINDOW)
@@ -497,10 +494,10 @@
(EF.INIT)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1147 16904 (EF.INIT 1157 . 1791) (EF.PROMPT 1793 . 2375) (EF.MESSAGE 2377 . 2589) (
EF.CLOSEFN 2591 . 3118) (EF.CHARITEMS 3120 . 4956) (EF.BUTTONEVENTFN 4958 . 5370) (EF.WHENSELECTEDFN
5372 . 5776) (EF.EDITBM 5778 . 7272) (EF.MIDDLEBUTTONFN 7274 . 7519) (EF.CHANGESIZE 7521 . 8850) (
EF.DELETE 8852 . 10033) (EF.ENTER 10035 . 10976) (EF.REPLACE 10978 . 11951) (EF.SAVE 11953 . 16196) (
COPYFONT 16198 . 16473) (READSTRIKEFONTFILE 16475 . 16902)) (16905 26286 (BLANKCHARSETCREATE 16915 .
23000) (EDITFONT 23002 . 26284)))))
(FILEMAP (NIL (1146 16903 (EF.INIT 1156 . 1790) (EF.PROMPT 1792 . 2374) (EF.MESSAGE 2376 . 2588) (
EF.CLOSEFN 2590 . 3117) (EF.CHARITEMS 3119 . 4955) (EF.BUTTONEVENTFN 4957 . 5369) (EF.WHENSELECTEDFN
5371 . 5775) (EF.EDITBM 5777 . 7271) (EF.MIDDLEBUTTONFN 7273 . 7518) (EF.CHANGESIZE 7520 . 8849) (
EF.DELETE 8851 . 10032) (EF.ENTER 10034 . 10975) (EF.REPLACE 10977 . 11950) (EF.SAVE 11952 . 16195) (
COPYFONT 16197 . 16472) (READSTRIKEFONTFILE 16474 . 16901)) (16904 26073 (BLANKCHARSETCREATE 16914 .
22999) (EDITFONT 23001 . 26071)))))
STOP

Binary file not shown.

View File

@@ -1,18 +1,17 @@
(DEFINE-FILE-INFO PACKAGE (DEFPACKAGE "BDF" (USE "XCL" "LISP") (EXPORT "READ-BDF" "BUILD-COMPOSITE"
"WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE") (IMPORT-FROM "IL" "BITBLT" "BITMAPBIT" "BITMAPCREATE"
"BITMAPHEIGHT" "BITMAPWIDTH" "BLACKSHADE" "BLTSHADE" "BOLD" "COMPRESSED" "CHARSETINFO" "CHARSETPROP"
"DISPLAY" "FONTDESCRIPTOR" "FONTP" "FONTPROP" "INPUT" "ITALIC" "LIGHT" "LRSH" "MCCS" "MEDIUM"
"REGULAR" "TCONC" "UTOMCODE?" "MEDLEYFONT.FILENAME" "MEDLEYFONT.WRITE.FONT")) READTABLE "XCL" BASE
10)
"BITMAPHEIGHT" "BITMAPWIDTH" "BLACKSHADE" "BLTSHADE" "BOLD" "COMPRESSED" "CHARSETINFO" "DISPLAY"
"FONTDESCRIPTOR" "FONTP" "FONTPROP" "INPUT" "ITALIC" "LIGHT" "LRSH" "MCCS" "MEDIUM" "REGULAR" "TCONC"
"UTOMCODE?" "MEDLEYFONT.FILENAME" "MEDLEYFONT.WRITE.FONT")) READTABLE "XCL" BASE 10)
(IL:FILECREATED " 8-Dec-2025 12:13:40" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;9| 51309
(IL:FILECREATED "16-Mar-2026 16:37:31" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;22| 58094
:EDIT-BY "mth"
:CHANGES-TO (IL:FUNCTIONS BDF-TO-CHARSETINFO BDF-TO-FONTDESCRIPTOR)
(FILE-ENVIRONMENTS "READ-BDF")
:CHANGES-TO (IL:FUNCTIONS READ-GLYPH READ-BDF BDF-TO-FONTDESCRIPTOR GLYPHS-BY-CHARSET
WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE BDF-TO-CHARSETINFO)
:PREVIOUS-DATE " 8-Dec-2025 12:12:47" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;8|
:PREVIOUS-DATE "23-Feb-2026 20:11:48" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;21|
)
@@ -20,7 +19,7 @@
(IL:RPAQQ IL:READ-BDFCOMS
((IL:STRUCTURES BDF-FONT GLYPH XLFD)
(IL:VARIABLES MAXCHARSET MAXTHINCHAR NOMAPPINGCHARSET)
(IL:VARIABLES GLYPH-PROCESSING-HOOK MAXCHARSET MAXTHINCHAR NOMAPPINGCHARSET)
(IL:FUNCTIONS BDF-TO-CHARSETINFO BDF-TO-FONTDESCRIPTOR BUILD-COMPOSITE CHAR-PRESENT-BIT
COUNT-MCHARS GLYPHS-BY-CHARSET PACKFILENAME.STRING READ-BDF
READ-DELIMITED-LIST-FROM-STRING READ-GLYPH WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE
@@ -71,13 +70,17 @@
(CHARSET昱EGISTRY NIL :TYPE STRING)
(CHARSET挂NCODING NIL :TYPE STRING))
(DEFVAR GLYPH-PROCESSING-HOOK NIL)
(DEFCONSTANT MAXCHARSET 255)
(DEFCONSTANT MAXTHINCHAR 255)
(DEFCONSTANT NOMAPPINGCHARSET (1+ MAXCHARSET))
(DEFUN BDF-TO-CHARSETINFO (FONT CSET SLUGWIDTH) (IL:* IL:\; "Edited 8-Dec-2025 12:13 by mth")
(DEFUN BDF-TO-CHARSETINFO (FONT CSET SLUGWIDTH &KEY AS-UNICODE)
(IL:* IL:\; "Edited 16-Mar-2026 16:35 by mth")
(IL:* IL:\; "Edited 8-Dec-2025 12:13 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 00:12 by mth")
(IL:* IL:\; "Edited 28-Nov-2025 16:37 by mth")
(IL:* IL:\; "Edited 26-Nov-2025 21:18 by mth")
@@ -107,7 +110,7 @@
(IL:* IL:|;;| "If passed a BDF-FONT, look only at glyphs in the mapped charsets")
(DESTRUCTURING-SETQ (GBCS SW)
(GLYPHS-BY-CHARSET FONT)))
(GLYPHS-BY-CHARSET FONT :AS-UNICODE AS-UNICODE)))
(T (ERROR "Invalid FONT: ~S" FONT)))
(UNLESS (AND (INTEGERP SLUGWIDTH)
(PLUSP SLUGWIDTH))
@@ -126,7 +129,9 @@
(IMAGEWIDTHS (IL:\\CREATECSINFOELEMENT))
(DLEFT 0)
GLYPHS-LIMITS BMAP OFFSETS HEIGHT WIDTHS)
(CHARSETPROP CSINFO 'IL:CSCHARENCODING 'MCCS)
(IL:CHARSETPROP CSINFO 'IL:CSCHARENCODING (IF AS-UNICODE
'IL:UNICODE
'MCCS))
(LOOP :FOR XGL :IN CSGLYPHS :DO (LET* ((MCODE (CAR XGL))
(GL (CDR XGL))
(GWIDTH (GLYPH-WIDTH GL))
@@ -201,7 +206,8 @@
'IL:REPLACE)
CSINFO))))
(DEFUN BDF-TO-FONTDESCRIPTOR (BDFONT FAMILY SIZE FACE ROTATION DEVICE)
(DEFUN BDF-TO-FONTDESCRIPTOR (BDFONT FAMILY SIZE FACE ROTATION DEVICE &KEY AS-UNICODE)
(IL:* IL:\; "Edited 16-Mar-2026 16:16 by mth")
(IL:* IL:\; "Edited 8-Dec-2025 12:11 by mth")
(IL:* IL:\; "Edited 2-Dec-2025 16:10 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 15:59 by mth")
@@ -220,7 +226,8 @@
(OR SIZE (FONTPROP FAMILY 'IL:SIZE))
(OR FACE (FONTPROP FAMILY 'IL:FACE))
(OR ROTATION (FONTPROP FAMILY 'IL:ROTATION))
(OR DEVICE (FONTPROP FAMILY 'IL:DEVICE)))))
(OR DEVICE (FONTPROP FAMILY 'IL:DEVICE))
:AS-UNICODE AS-UNICODE)))
(WHEN (CONSP FAMILY) (IL:* IL:\;
 "Because (LISTP NIL) == T !!!")
@@ -240,7 +247,8 @@
0)
(OR DEVICE (IL:|fetch| (IL:FONTSPEC IL:FSDEVICE)
IL:|of| FAMILY)
'DISPLAY))))
'DISPLAY)
:AS-UNICODE AS-UNICODE)))
(LET ((XLFD (BF-XLFD BDFONT))
FONTDESC GBCSL CHARSETS SLUGWIDTH)
(SETQ FAMILY (IL:\\FONTSYMBOL (OR FAMILY (XLFD-FAMILY XLFD))))
@@ -280,7 +288,7 @@
'IL:MRR)
NIL DEVICE))
(DESTRUCTURING-SETQ (GBCSL SLUGWIDTH)
(GLYPHS-BY-CHARSET BDFONT))
(GLYPHS-BY-CHARSET BDFONT :AS-UNICODE AS-UNICODE))
(UNLESS SLUGWIDTH
(IL:* IL:|;;|
@@ -300,16 +308,21 @@
IL:ROTATION IL:_ ROTATION
IL:FONTDEVICESPEC IL:_ (LIST FAMILY SIZE FACE ROTATION DEVICE)
IL:FONTSLUGWIDTH IL:_ SLUGWIDTH
IL:FONTCHARENCODING IL:_ 'MCCS))
IL:FONTCHARENCODING IL:_ (IF AS-UNICODE
'IL:UNICODE
'MCCS)))
(SETQ CHARSETS (LOOP :FOR CS :IN GBCSL :WITH CSET :WITH CSINFO :NCONC
(WHEN (<= 0 (SETQ CSET (FIRST CS))
MAXCHARSET)
(SETQ CSINFO (BDF-TO-CHARSETINFO GBCSL CSET (1+ SLUGWIDTH)))
(SETQ CSINFO (BDF-TO-CHARSETINFO GBCSL CSET (1+ SLUGWIDTH)
:AS-UNICODE AS-UNICODE))
(IL:\\INSTALLCHARSETINFO FONTDESC CSINFO CSET)
(LIST CSET)))))
(LIST FONTDESC CHARSETS))))
(DEFUN BUILD-COMPOSITE (FONTS &KEY VERBOSE) (IL:* IL:\; "Edited 1-Dec-2025 23:07 by mth")
(DEFUN BUILD-COMPOSITE (FONTS &KEY VERBOSE (BLOCKING T))
(IL:* IL:\; "Edited 19-Feb-2026 21:45 by mth")
(IL:* IL:\; "Edited 1-Dec-2025 23:07 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 12:32 by mth")
(IL:* IL:\; "Edited 26-Nov-2025 21:23 by mth")
(IL:* IL:\; "Edited 18-Nov-2025 21:22 by mth")
@@ -327,53 +340,61 @@
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT* "~&Loading initial font file: ~A~%" (NAMESTRING BASE-FONT)
))
(SETQ BASE-FONT (READ-BDF BASE-FONT :MCCS-ONLY T :VERBOSE VERBOSE)))
(SETQ BASE-FONT (READ-BDF BASE-FONT :MCCS-ONLY T :VERBOSE VERBOSE))
(WHEN BLOCKING (IL:BLOCK)))
((NOT (BDF-FONT-P BASE-FONT))
(ERROR "Initial font (~S) is not a BDF-FONT, nor string, nor pathname." BASE-FONT)))
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT* "~&Initial font contains ~D MCCS characters.~%"
(SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))))
(SETQ MCHAR-PRESENT (BF-MCHAR-PRESENT BASE-FONT))
(LOOP :FOR FILL-FONT :IN FILL-FROM :WITH PREV-CC :WHEN FILL-FONT :DO
(COND
((OR (STRINGP FILL-FONT)
(PATHNAMEP FILL-FONT))
(UNLESS (IL:INFILEP FILL-FONT)
(ERROR "Subsequent font ~S doesn't exist or is unreadable." (NAMESTRING
FILL-FONT)))
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT* "~&Loading subsequent font file: ~A~%" (NAMESTRING
FILL-FONT)))
(SETQ FILL-FONT (READ-BDF FILL-FONT :MCCS-ONLY T :VERBOSE VERBOSE)))
((NOT (BDF-FONT-P FILL-FONT))
(ERROR "Subsequent font (~S) is not a BDF-FONT, nor string, nor pathname."
FILL-FONT)))
(SETQ PREV-CC CHAR-COUNT)
(LOOP :FOR GL :IN (BF-GLYPHS FILL-FONT)
:WITH V :DO (SETQ V (GLYPH-ENCODING GL))
(WHEN (AND (LISTP V)
(EQ (FIRST V)
-1))
(SETQ V (OR (SECOND V)
-1)))
(LOOP :FOR FILL-FONT :IN FILL-FROM :WITH PREV-CC :WITH FF-NAME :WHEN FILL-FONT :DO
(FLET ((MERGE-GLYPH (GL &AUX V)
(SETQ V (GLYPH-ENCODING GL))
(WHEN (AND (LISTP V)
(EQ (FIRST V)
-1))
(SETQ V (OR (SECOND V)
-1)))
(IL:* IL:|;;|
(IL:* IL:|;;|
 "Need to change this use of UTOMCODE? based on the CHARSET昱EGISTRY of the XLFD of FILL-FONT")
(WHEN (AND (UTOMCODE? V)
(ZEROP (CHAR-PRESENT-BIT MCHAR-PRESENT V)))
(CHAR-PRESENT-BIT MCHAR-PRESENT V 1)
(WHEN (AND (UTOMCODE? V)
(ZEROP (CHAR-PRESENT-BIT MCHAR-PRESENT V)))
(CHAR-PRESENT-BIT MCHAR-PRESENT V 1)
(IL:* IL:|;;|
(IL:* IL:|;;|
 "What other bookkeping of BASE-FONT needs to be done when adding a glyph? Any?")
(PUSH GL (BF-GLYPHS BASE-FONT))))
(SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT* "~&Font ~A supplied ~D additional MCCS characters.~%"
(NAMESTRING FILL-FONT)
(- (SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))
PREV-CC))))
(PUSH GL (BF-GLYPHS BASE-FONT)))
NIL))
(COND
((OR (STRINGP FILL-FONT)
(PATHNAMEP FILL-FONT))
(SETQ FF-NAME (NAMESTRING FILL-FONT))
(UNLESS (IL:INFILEP FILL-FONT)
(ERROR "Subsequent font ~S doesn't exist or is unreadable." FF-NAME))
(WHEN VERBOSE (FORMAT *STANDARD-OUTPUT*
"~&Loading subsequent font file: ~A~%" FF-NAME))
(LET ((GLYPH-PROCESSING-HOOK #'MERGE-GLYPH))
(READ-BDF FILL-FONT :MCCS-ONLY T :VERBOSE VERBOSE)
(SETQ FILL-FONT NIL))
(WHEN BLOCKING (IL:BLOCK)))
((NOT (BDF-FONT-P FILL-FONT))
(ERROR "Subsequent font (~S) is not a BDF-FONT, nor string, nor pathname."
FF-NAME)))
(SETQ PREV-CC CHAR-COUNT)
(WHEN FILL-FONT
(LOOP :FOR GL :IN (BF-GLYPHS FILL-FONT)
:DO
(MERGE-GLYPH GL)))
(SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT*
"~&Font ~A supplied ~D additional MCCS characters.~%" FF-NAME
(- (SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))
PREV-CC)))))
BASE-FONT))
(DEFUN CHAR-PRESENT-BIT (BM MCODE &OPTIONAL (NEWBIT -1 SBIT)
@@ -401,7 +422,8 @@
(LET ((MCPBM (BF-MCHAR-PRESENT BDFONT)))
(LOOP :FOR MC :FROM 0 :TO 65535 :COUNT (PLUSP (CHAR-PRESENT-BIT MCPBM MC))))))
(DEFUN GLYPHS-BY-CHARSET (FONT) (IL:* IL:\; "Edited 30-Nov-2025 17:36 by mth")
(DEFUN GLYPHS-BY-CHARSET (FONT &KEY AS-UNICODE) (IL:* IL:\; "Edited 16-Mar-2026 16:06 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 17:36 by mth")
(IL:* IL:\; "Edited 28-Nov-2025 17:24 by mth")
(IL:* IL:\; "Edited 26-Nov-2025 20:50 by mth")
(IL:* IL:\; "Edited 20-Nov-2025 12:01 by mth")
@@ -471,7 +493,9 @@
X))
Y))))
(DEFUN READ-BDF (PATH &KEY VERBOSE MCCS-ONLY (EXTERNAL-FORMAT :ISO8859/1))
(DEFUN READ-BDF (PATH &KEY VERBOSE MCCS-ONLY AS-UNICODE (EXTERNAL-FORMAT :ISO8859/1))
(IL:* IL:\; "Edited 16-Mar-2026 16:11 by mth")
(IL:* IL:\; "Edited 19-Feb-2026 21:42 by mth")
(IL:* IL:\; "Edited 1-Dec-2025 22:40 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 11:59 by mth")
(IL:* IL:\; "Edited 28-Nov-2025 17:39 by mth")
@@ -586,16 +610,43 @@
(PLUSP NGLYPHS))
(ERROR "Invalid BDF file - CHARS count (~A) is invalid or missing."
NGLYPHS))
(LOOP :REPEAT NGLYPHS :WITH ENC :WITH MC :DO (SETQ GL (READ-GLYPH
FILE-STREAM
FONT))
(LOOP :REPEAT NGLYPHS :WITH ENC :WITH MC :DO
(SETQ GL (READ-GLYPH FILE-STREAM FONT :MCCS-ONLY MCCS-ONLY :AS-UNICODE
AS-UNICODE))
(SETQ ENC (GLYPH-ENCODING GL))
(WHEN (AND (LISTP ENC)
(EQ (FIRST ENC)
-1))
(EQL (FIRST ENC)
-1))
(SETQ ENC (OR (SECOND ENC)
-1)))
(COND
(AS-UNICODE
(IL:* IL:|;;|
 "IS THIS TRUE IF REMAINING IN UNICODE ENCODING?")
(IL:* IL:|;;| "This glyph must have either a non-zero-width \"image\" or a non-zero-width \"escapement\", otherwise it cannot be mapped, no matter the UTOMCODE? value.")
(IL:* IL:|;;| "For now, assuming NOT TRUE")
(WHEN (AND GLYPH-PROCESSING-HOOK (FUNCTIONP
GLYPH-PROCESSING-HOOK
))
(SETQ GL (FUNCALL GLYPH-PROCESSING-HOOK GL)))
(WHEN GL
(IL:* IL:|;;|
 "Everything is mappable if in 0000-FFFF range")
(IF (<= 0 ENC 65535)
(PROGN (SETF (GLYPH-MCODE GL)
ENC)
(TCONC MAPPED-GLYPHS GL))
(TCONC UNMAPPED-GLYPHS GL)))
(IL:* IL:|;;| "Don't bother with MCHAR-PRESENT bits")
)
((AND (OR (PLUSP (GLYPH-BBW GL))
(PLUSP (FIRST (GLYPH-DWIDTH GL))))
(SETQ MC (UTOMCODE? ENC)))
@@ -615,143 +666,200 @@
(IL:* IL:|;;| "It ought to be safe to share the bitmap")
(TCONC MAPPED-GLYPHS CGL)
(WHEN (AND GLYPH-PROCESSING-HOOK (FUNCTIONP
GLYPH-PROCESSING-HOOK
))
(SETQ CGL (FUNCALL GLYPH-PROCESSING-HOOK CGL)))
(WHEN CGL (TCONC MAPPED-GLYPHS CGL))
(CHAR-PRESENT-BIT MCHAR-PRESENT CC 1)))
(T (TCONC UNMAPPED-GLYPHS GL))))
((NOT MCCS-ONLY)
(WHEN (AND GLYPH-PROCESSING-HOOK (FUNCTIONP GLYPH-PROCESSING-HOOK)
)
(SETQ GL (FUNCALL GLYPH-PROCESSING-HOOK GL)))
(WHEN GL (TCONC UNMAPPED-GLYPHS GL)))))
(SETF (BF-GLYPHS FONT)
(CAR MAPPED-GLYPHS))
(SETF (BF-UNMAPPED故LYPHS FONT)
(CAR UNMAPPED-GLYPHS)))
(ENDFONT (SETQ FONT-COMPLETE T))))))))
(WHEN VERBOSE
(ENDFONT (SETQ FONT-COMPLETE T)))))))))
(WHEN VERBOSE
(IL:* IL:|;;| "The SIZE reported needs clarification:")
(IL:* IL:|;;| "The SIZE reported needs clarification:")
(FORMAT *STANDARD-OUTPUT* "Name: ~A~%Family: ~A~%Sizes: Font: ~A Pixel: ~A Point: ~A (decipoints)~%Weight: ~A~%Slant: ~A~%Expansion: ~A~%"
(BF-NAME FONT)
(XLFD-FAMILY XLFD)
(FIRST (BF-SIZE FONT))
(XLFD-PIXEL昤IZE XLFD)
(XLFD-POINT昤IZE XLFD)
(XLFD-WEIGHT XLFD)
(XLFD-SLANT XLFD)
(XLFD-SETWIDTH昧AME XLFD)))
FONT)))
(FORMAT *STANDARD-OUTPUT* "Name: ~A~%Family: ~A~%Sizes: Font: ~A Pixel: ~A Point: ~A (decipoints)~%Weight: ~A~%Slant: ~A~%Expansion: ~A~%Glyphs: ~D~%Unmapped glyphs: ~D~%"
(BF-NAME FONT)
(XLFD-FAMILY XLFD)
(FIRST (BF-SIZE FONT))
(XLFD-PIXEL昤IZE XLFD)
(XLFD-POINT昤IZE XLFD)
(XLFD-WEIGHT XLFD)
(XLFD-SLANT XLFD)
(XLFD-SETWIDTH昧AME XLFD)
(LENGTH (BF-GLYPHS FONT))
(LENGTH (BF-UNMAPPED故LYPHS FONT))))
FONT))
(DEFUN READ-DELIMITED-LIST-FROM-STRING (INPUT-STRING &OPTIONAL (DELIMIT #\]))
(IL:* IL:\; "Edited 20-Aug-2024 16:46 by mth")
(WITH-INPUT-FROM-STRING (SI (CONCATENATE 'STRING INPUT-STRING " " (STRING DELIMIT)))
(READ-DELIMITED-LIST DELIMIT SI)))
(DEFUN READ-GLYPH (FILE-STREAM FONT) (IL:* IL:\; "Edited 26-Nov-2025 23:32 by mth")
(DEFUN READ-GLYPH (FILE-STREAM FONT &KEY MCCS-ONLY AS-UNICODE)
(IL:* IL:\; "Edited 16-Mar-2026 15:32 by mth")
(IL:* IL:\; "Edited 23-Feb-2026 20:11 by mth")
(IL:* IL:\; "Edited 19-Feb-2026 15:46 by mth")
(IL:* IL:\; "Edited 26-Nov-2025 23:32 by mth")
(IL:* IL:\; "Edited 17-Nov-2025 20:03 by mth")
(IL:* IL:\; "Edited 23-Apr-2025 17:53 by mth")
(IL:* IL:\; "Edited 21-Apr-2025 13:37 by mth")
(IL:* IL:\; "Edited 19-Apr-2025 09:32 by mth")
(IL:* IL:\; "Edited 17-Apr-2025 18:14 by mth")
(IL:* IL:\; "Edited 21-Aug-2024 01:10 by mth")
(LET ((GLYPH (MAKE-GLYPH :SWIDTH (COPY-LIST (BF-SWIDTH FONT))
:DWIDTH
(COPY-LIST (BF-DWIDTH FONT))
:SWIDTH1
(COPY-LIST (BF-SWIDTH1 FONT))
:DWIDTH1
(COPY-LIST (BF-DWIDTH1 FONT))
:VVECTOR
(COPY-LIST (BF-VVECTOR FONT))))
CHAR-COMPLETE LINE ITEMS V KEY POS STARTED BBW BBH)
(LOOP :UNTIL CHAR-COMPLETE :DO (SETQ LINE (READ-LINE FILE-STREAM))
(WHEN LINE (IL:* IL:\; "Ignore blank lines")
(MULTIPLE-VALUE-SETQ (KEY POS)
(READ-FROM-STRING LINE))
(WHEN (<= POS (LENGTH LINE))
(SETQ LINE (SUBSEQ LINE POS)))
(COND
((EQ KEY 'COMMENT) (IL:* IL:\; "Ignore COMMENT lines")
(LET
((GLYPH (MAKE-GLYPH :SWIDTH (COPY-LIST (BF-SWIDTH FONT))
:DWIDTH
(COPY-LIST (BF-DWIDTH FONT))
:SWIDTH1
(COPY-LIST (BF-SWIDTH1 FONT))
:DWIDTH1
(COPY-LIST (BF-DWIDTH1 FONT))
:VVECTOR
(COPY-LIST (BF-VVECTOR FONT))))
CHAR-COMPLETE ENC LINE ITEMS V KEY POS STARTED BBW BBH)
(LOOP
:UNTIL CHAR-COMPLETE :DO (SETQ LINE (READ-LINE FILE-STREAM))
(WHEN LINE (IL:* IL:\; "Ignore blank lines")
(MULTIPLE-VALUE-SETQ (KEY POS)
(READ-FROM-STRING LINE))
(WHEN (<= POS (LENGTH LINE))
(SETQ LINE (SUBSEQ LINE POS)))
(COND
((EQ KEY 'COMMENT) (IL:* IL:\; "Ignore COMMENT lines")
(IL:* IL:\;
 "Probably aren't \"legal\" here, anyway.")
)
((EQ KEY 'STARTCHAR)
(WHEN STARTED (ERROR "Invalid BDF file - STARTCHAR inside glyph."))
(SETF STARTED T)
(SETF (GLYPH-NAME GLYPH)
(STRING LINE)))
(T (UNLESS STARTED (ERROR
)
((EQ KEY 'STARTCHAR)
(WHEN STARTED (ERROR "Invalid BDF file - STARTCHAR inside glyph."))
(SETF STARTED T)
(SETF (GLYPH-NAME GLYPH)
(STRING LINE)))
(T
(UNLESS STARTED (ERROR
"Invalid BDF file - glyph has not been started. STARTCHAR missing."
))
(SETQ ITEMS (READ-DELIMITED-LIST-FROM-STRING LINE))
(CASE KEY
(ENCODING (SETF (GLYPH-ENCODING GLYPH)
(IF (EQL -1 (FIRST ITEMS))
ITEMS
(FIRST ITEMS))))
(SWIDTH (SETF (GLYPH-SWIDTH GLYPH)
ITEMS))
(DWIDTH (SETF (GLYPH-DWIDTH GLYPH)
ITEMS))
(SWIDTH1 (SETF (GLYPH-SWIDTH1 GLYPH)
ITEMS))
(DWIDTH1 (SETF (GLYPH-DWIDTH1 GLYPH)
ITEMS))
(VVECTOR (SETF (GLYPH-VVECTOR GLYPH)
ITEMS))
(BBX (SETF (GLYPH-BBW GLYPH)
(SETQ BBW (FIRST ITEMS))
(GLYPH-BBH GLYPH)
(SETQ BBH (SECOND ITEMS))
(GLYPH-BBXOFF0 GLYPH)
(THIRD ITEMS)
(GLYPH-BBYOFF0 GLYPH)
(FOURTH ITEMS)))
(BITMAP (UNLESS (ZEROP (* BBW BBH))
))
(SETQ ITEMS (READ-DELIMITED-LIST-FROM-STRING LINE))
(CASE KEY
(ENCODING (SETF (GLYPH-ENCODING GLYPH)
(SETQ ENC (IF (EQL -1 (FIRST ITEMS))
ITEMS
(FIRST ITEMS)))))
(SWIDTH (SETF (GLYPH-SWIDTH GLYPH)
ITEMS))
(DWIDTH (SETF (GLYPH-DWIDTH GLYPH)
ITEMS))
(SWIDTH1 (SETF (GLYPH-SWIDTH1 GLYPH)
ITEMS))
(DWIDTH1 (SETF (GLYPH-DWIDTH1 GLYPH)
ITEMS))
(VVECTOR (SETF (GLYPH-VVECTOR GLYPH)
ITEMS))
(BBX (SETF (GLYPH-BBW GLYPH)
(SETQ BBW (FIRST ITEMS))
(GLYPH-BBH GLYPH)
(SETQ BBH (SECOND ITEMS))
(GLYPH-BBXOFF0 GLYPH)
(THIRD ITEMS)
(GLYPH-BBYOFF0 GLYPH)
(FOURTH ITEMS)))
(BITMAP
(UNLESS (ZEROP (* BBW BBH)) (IL:* IL:\;
 "Don't bother creating a BITMAP with no area")
(IF (AND (NOT AS-UNICODE)
MCCS-ONLY
(NOT (UTOMCODE? ENC)))
(PROGN
(IL:* IL:|;;|
 "This is the case of skipping over non-MCCS encoded glyph when MCCS-ONLY")
(IL:* IL:|;;| "Don't bother creating a BITMAP with no area")
(LOOP :REPEAT BBH :DO (READ-LINE FILE-STREAM)))
(LET*
((BM (BITMAPCREATE BBW BBH 1))
(BM.BASE (IL:|fetch| IL:BITMAPBASE IL:|of| BM))
(BM.RASTERWIDTH (IL:|fetch| IL:BITMAPRASTERWIDTH IL:|of| BM))
(NBYTES (CEILING BBW 8))
(NCHARS (* 2 NBYTES))
(NWORDS (CEILING BBW 16))
BITS WORDINDEX)
(LABELS ((CHAR-HEX-VALUE (C)
(IF (CHARACTERP C)
(COND
((CHAR<= #\0 C #\9)
(- (CHAR-CODE C)
(IL:CONSTANT (CHAR-CODE #\0))))
((CHAR<= #\A C #\F)
(LET* ((BM (BITMAPCREATE BBW BBH 1))
(BM.BASE (IL:|fetch| IL:BITMAPBASE IL:|of| BM))
(BM.RASTERWIDTH (IL:|fetch| IL:BITMAPRASTERWIDTH
IL:|of| BM))
(NBYTES (CEILING BBW 8))
(NCHARS (* 2 NBYTES))
(NWORDS (CEILING BBW 16))
BITS BYTEPOS WORDINDEX)
(LOOP :WITH BITROW = 0 :REPEAT BBH :DO
(SETQ LINE (STRING-TRIM '(#\Space #\Tab)
(READ-LINE FILE-STREAM)))
(UNLESS (AND (EQUAL NCHARS (LENGTH LINE))
(SETQ BITS
(PARSE-INTEGER LINE :RADIX 16
:JUNK-ALLOWED T)))
(ERROR
"Invalid BDF file - bad line in BITMAP: ~A"
LINE))
(WHEN (ODDP NBYTES)
(SETQ BITS (ASH BITS 8)))
(SETQ WORDINDEX (* BITROW BM.RASTERWIDTH))
(SETQ BYTEPOS (* 16 (1- NWORDS)))
(LOOP :REPEAT NWORDS :DO
(IL:\\PUTBASE BM.BASE WORDINDEX
(LDB (BYTE 16 BYTEPOS)
BITS))
(INCF WORDINDEX)
(DECF BYTEPOS 16))
(INCF BITROW))
(SETF (GLYPH-BITMAP GLYPH)
BM))))
(ENDCHAR (SETQ CHAR-COMPLETE T)))))))
(SETF (GLYPH-ASCENT GLYPH)
(+ (GLYPH-BBH GLYPH)
(GLYPH-BBYOFF0 GLYPH)))
(SETF (GLYPH-DESCENT GLYPH)
(ABS (MIN 0 (GLYPH-BBYOFF0 GLYPH))))
(SETF (GLYPH-WIDTH GLYPH)
(MAX (+ (MAX 0 (GLYPH-BBXOFF0 GLYPH))
(GLYPH-BBW GLYPH))
(FIRST (GLYPH-DWIDTH GLYPH))))
GLYPH))
(IL:* IL:|;;|
 "The (- (CHAR-CODE #\\A) 10) accomplishes adding 10 after the outer subtraction")
(- (CHAR-CODE C)
(IL:CONSTANT (- (CHAR-CODE #\A)
10))))
((CHAR<= #\a C #\f)
(IL:* IL:|;;|
 "The (- (CHAR-CODE #\\a) 10) accomplishes adding 10 after the outer subtraction")
(- (CHAR-CODE C)
(IL:CONSTANT (- (CHAR-CODE #\a)
10))))
(T 0))
0))
(PARSE-WORDS
NIL
(LOOP :FOR I :FROM 0 :TO (1- NCHARS)
:BY 4 :WITH C3LIMIT = (- NCHARS 3)
:WITH C4LIMIT = (- NCHARS 4)
:COLLECT
(+ (ASH (CHAR-HEX-VALUE (CHAR LINE I))
12)
(ASH (CHAR-HEX-VALUE (CHAR LINE (+ 1 I)))
8)
(ASH (CHAR-HEX-VALUE (AND (<= I C3LIMIT)
(CHAR LINE (+ 2 I))))
4)
(CHAR-HEX-VALUE (AND (<= I C4LIMIT)
(CHAR LINE (+ 3 I))))))))
(LOOP :WITH BITROW = 0 :REPEAT BBH :DO
(SETQ LINE (STRING-TRIM '(#\Space #\Tab)
(READ-LINE FILE-STREAM)))
(UNLESS (EQUAL NCHARS (LENGTH LINE))
(ERROR "Invalid BDF file - bad line in BITMAP: ~A"
LINE))
(SETQ BITS (PARSE-WORDS))
(SETQ WORDINDEX (* BITROW BM.RASTERWIDTH))
(LOOP :REPEAT NWORDS :DO (IL:\\PUTBASE BM.BASE WORDINDEX
(POP BITS))
(INCF WORDINDEX))
(INCF BITROW)))
(SETF (GLYPH-BITMAP GLYPH)
BM)))))
(ENDCHAR (SETQ CHAR-COMPLETE T)))))))
(SETF (GLYPH-ASCENT GLYPH)
(+ (GLYPH-BBH GLYPH)
(GLYPH-BBYOFF0 GLYPH)))
(SETF (GLYPH-DESCENT GLYPH)
(ABS (MIN 0 (GLYPH-BBYOFF0 GLYPH))))
(SETF (GLYPH-WIDTH GLYPH)
(MAX (+ (MAX 0 (GLYPH-BBXOFF0 GLYPH))
(GLYPH-BBW GLYPH))
(FIRST (GLYPH-DWIDTH GLYPH))))
GLYPH))
(DEFUN WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE (BDFONT DEST-DIR &KEY FAMILY SIZE FACE ROTATION DEVICE
&AUX FULLFILENAME)
AS-UNICODE TEST &AUX FULLFILENAME)
(IL:* IL:\; "Edited 16-Mar-2026 16:12 by mth")
(IL:* IL:\; "Edited 23-Feb-2026 15:57 by mth")
(IL:* IL:\; "Edited 17-Feb-2026 14:17 by mth")
(IL:* IL:\; "Edited 2-Dec-2025 14:47 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 16:03 by mth")
(IL:* IL:\; "Edited 28-Nov-2025 17:56 by mth")
@@ -760,7 +868,7 @@
(UNLESS (BDF-FONT-P BDFONT)
(ERROR "Not a BDF-FONT: ~S ~%" BDFONT))
(DESTRUCTURING-BIND (FONTDESC CSETS)
(BDF-TO-FONTDESCRIPTOR BDFONT FAMILY SIZE FACE ROTATION DEVICE)
(BDF-TO-FONTDESCRIPTOR BDFONT FAMILY SIZE FACE ROTATION DEVICE :AS-UNICODE AS-UNICODE)
(UNLESS FONTDESC
(IL:* IL:|;;| "Creation of the FONTDESCRIPTOR failed!")
@@ -769,8 +877,10 @@
(IL:* IL:|;;| "CSETS correspond to the charsets actually present in the FONTDESC.")
(SETQ FULLFILENAME (MEDLEYFONT.WRITE.FONT FONTDESC (MEDLEYFONT.FILENAME FONTDESC NIL NIL
DEST-DIR)))
(SETQ FULLFILENAME (IF TEST
"WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE TEST"
(MEDLEYFONT.WRITE.FONT FONTDESC (MEDLEYFONT.FILENAME NIL FONTDESC
NIL NIL DEST-DIR))))
(LIST FULLFILENAME FONTDESC CSETS)))
(DEFUN XLFD-SPLIT-FONT-NAME (NAME) (IL:* IL:\; "Edited 26-Nov-2025 09:43 by mth")
@@ -880,21 +990,21 @@
"BITMAPCREATE" "BITMAPHEIGHT"
"BITMAPWIDTH" "BLACKSHADE" "BLTSHADE"
"BOLD" "COMPRESSED" "CHARSETINFO"
"CHARSETPROP" "DISPLAY" "FONTDESCRIPTOR"
"FONTP" "FONTPROP" "INPUT" "ITALIC"
"LIGHT" "LRSH" "MCCS" "MEDIUM" "REGULAR"
"TCONC" "UTOMCODE?" "MEDLEYFONT.FILENAME"
"DISPLAY" "FONTDESCRIPTOR" "FONTP"
"FONTPROP" "INPUT" "ITALIC" "LIGHT" "LRSH"
"MCCS" "MEDIUM" "REGULAR" "TCONC"
"UTOMCODE?" "MEDLEYFONT.FILENAME"
"MEDLEYFONT.WRITE.FONT"))
:READTABLE "XCL"
:COMPILER :COMPILE-FILE)
(IL:PUTPROPS IL:READ-BDF IL:DATABASE IL:NO)
(IL:DECLARE\: IL:DONTCOPY
(IL:FILEMAP (NIL (3116 10226 (BDF-TO-CHARSETINFO 3116 . 10226)) (10228 16847 (BDF-TO-FONTDESCRIPTOR
10228 . 16847)) (16849 20782 (BUILD-COMPOSITE 16849 . 20782)) (20784 21533 (CHAR-PRESENT-BIT 20784 .
21533)) (21535 21819 (COUNT-MCHARS 21535 . 21819)) (21821 24856 (GLYPHS-BY-CHARSET 21821 . 24856)) (
24858 26283 (PACKFILENAME.STRING 24858 . 26283)) (26285 35760 (READ-BDF 26285 . 35760)) (35762 36085 (
READ-DELIMITED-LIST-FROM-STRING 35762 . 36085)) (36087 43085 (READ-GLYPH 36087 . 43085)) (43087 44472
(WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE 43087 . 44472)) (44474 46891 (XLFD-SPLIT-FONT-NAME 44474 . 46891)
) (46893 49905 (XLFD-TO-FACE 46893 . 49905)))))
(IL:FILEMAP (NIL (3216 10679 (BDF-TO-CHARSETINFO 3216 . 10679)) (10681 17828 (BDF-TO-FONTDESCRIPTOR
10681 . 17828)) (17830 22409 (BUILD-COMPOSITE 17830 . 22409)) (22411 23160 (CHAR-PRESENT-BIT 22411 .
23160)) (23162 23446 (COUNT-MCHARS 23162 . 23446)) (23448 26592 (GLYPHS-BY-CHARSET 23448 . 26592)) (
26594 28019 (PACKFILENAME.STRING 26594 . 28019)) (28021 40051 (READ-BDF 28021 . 40051)) (40053 40376 (
READ-DELIMITED-LIST-FROM-STRING 40053 . 40376)) (40378 49390 (READ-GLYPH 40378 . 49390)) (49392 51271
(WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE 49392 . 51271)) (51273 53690 (XLFD-SPLIT-FONT-NAME 51273 . 53690)
) (53692 56704 (XLFD-TO-FACE 53692 . 56704)))))
IL:STOP

Binary file not shown.

Binary file not shown.