1
0
mirror of synced 2026-01-12 00:42:56 +00:00

Fixed incomplete description in documentation.

Changed parameters for BUILD-COMPOSITE to simplify, and enable keyword :VERBOSE parameter.
Added some VERBOSE progress messages.
This commit is contained in:
Matt Heffron 2025-12-01 23:39:59 -08:00
parent 5a0a9dfd6f
commit b5ccfdc4e7
3 changed files with 67 additions and 62 deletions

View File

@ -4,16 +4,13 @@
"FONTDESCRIPTOR" "FONTP" "FONTPROP" "INPUT" "ITALIC" "LIGHT" "LRSH" "MEDIUM" "REGULAR" "TCONC"
"UTOMCODE?" "MEDLEYFONT.FILENAME" "MEDLEYFONT.WRITE.FONT")) READTABLE "XCL" BASE 10)
(IL:FILECREATED "30-Nov-2025 17:43:25" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;75| 50310
(IL:FILECREATED " 1-Dec-2025 23:07:52" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;3| 50528
:EDIT-BY "mth"
:CHANGES-TO (IL:FUNCTIONS GLYPHS-BY-CHARSET BDF-TO-FONTDESCRIPTOR
WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE BUILD-COMPOSITE READ-BDF
BDF-TO-CHARSETINFO COUNT-MCHARS)
(IL:VARS IL:READ-BDFCOMS)
:CHANGES-TO (IL:FUNCTIONS BUILD-COMPOSITE READ-BDF)
:PREVIOUS-DATE "30-Nov-2025 16:05:42" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;74|
:PREVIOUS-DATE "30-Nov-2025 17:43:25" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;1|
)
@ -305,65 +302,72 @@
(LIST CSET)))))
(LIST FONTDESC CHARSETS))))
(DEFUN BUILD-COMPOSITE (BASE-FONT &REST FILL-FROM) (IL:* IL:\; "Edited 30-Nov-2025 12:32 by mth")
(DEFUN BUILD-COMPOSITE (FONTS &KEY VERBOSE) (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")
(IL:* IL:\; "Edited 16-Nov-2025 18:25 by mth")
(IL:* IL:\; "Edited 14-Nov-2025 17:04 by mth")
(LET (MCHAR-PRESENT FONT)
(UNLESS (AND FILL-FROM (LISTP FILL-FROM))
(ERROR "FILL-FROM is not a list."))
(WHEN (LISTP BASE-FONT)
(LET* ((BASE-FONT (FIRST (SETQ FONTS (IL:MKLIST FONTS))))
(FILL-FROM (REST FONTS))
MCHAR-PRESENT CHAR-COUNT FONT)
(COND
((OR (STRINGP BASE-FONT)
(PATHNAMEP BASE-FONT))
(UNLESS (IL:INFILEP BASE-FONT)
(ERROR "Initial font file ~S doesn't exist or is unreadable." (NAMESTRING BASE-FONT)
))
(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)))
((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)))
(IL:* IL:|;;| "Allow specifying both BASE-FONT and FILL-FROM in a single LIST.")
(SETQ FONT (FIRST BASE-FONT))
(SETQ FILL-FROM (APPEND (REST BASE-FONT)
FILL-FROM))
(SETQ BASE-FONT FONT))
(COND
((OR (STRINGP BASE-FONT)
(PATHNAMEP BASE-FONT))
(UNLESS (IL:INFILEP BASE-FONT)
(ERROR "BASE-FONT ~S doesn't exist or is unreadable." BASE-FONT))
(SETQ BASE-FONT (READ-BDF BASE-FONT :MCCS-ONLY T)))
((NOT (TYPEP BASE-FONT 'BDF-FONT))
(ERROR "BASE-FONT is not a BDF-FONT, nor string, nor pathname.")))
(SETQ MCHAR-PRESENT (BF-MCHAR-PRESENT BASE-FONT))
(LOOP :FOR FILL-FONT :IN FILL-FROM :WHEN FILL-FONT :DO (COND
((OR (STRINGP FILL-FONT)
(PATHNAMEP FILL-FONT))
(UNLESS (IL:INFILEP FILL-FONT)
(ERROR
"Element of FILL-FROM (~S) doesn't exist or is unreadable."
FILL-FONT))
(SETQ FILL-FONT
(READ-BDF FILL-FONT
:MCCS-ONLY T)))
((NOT (BDF-FONT-P FILL-FONT))
(ERROR
"Element of FILL-FROM (~S) is not a BDF-FONT, nor string, nor pathname."
FILL-FONT)))
(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)))
(IL:* IL:|;;|
(IL:* IL:|;;|
 "Need to change this use of UTOMCODE? based on the CHARSET¬REGISTRY 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)))))
BASE-FONT))
(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))))
BASE-FONT))
(DEFUN CHAR-PRESENT-BIT (BM MCODE &OPTIONAL (NEWBIT -1 SBIT)
&AUX CS CC) (IL:* IL:\; "Edited 26-Nov-2025 09:29 by mth")
@ -461,6 +465,7 @@
Y))))
(DEFUN READ-BDF (PATH &KEY VERBOSE MCCS-ONLY (EXTERNAL-FORMAT :ISO8859/1))
(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")
(IL:* IL:\; "Edited 26-Nov-2025 22:47 by mth")
@ -877,11 +882,11 @@
(IL:PUTPROPS IL:READ-BDF IL:DATABASE IL:NO)
(IL:DECLARE\: IL:DONTCOPY
(IL:FILEMAP (NIL (3235 10173 (BDF-TO-CHARSETINFO 3235 . 10173)) (10175 16397 (BDF-TO-FONTDESCRIPTOR
10175 . 16397)) (16399 20017 (BUILD-COMPOSITE 16399 . 20017)) (20019 20768 (CHAR-PRESENT-BIT 20019 .
20768)) (20770 21054 (COUNT-MCHARS 20770 . 21054)) (21056 24091 (GLYPHS-BY-CHARSET 21056 . 24091)) (
24093 25518 (PACKFILENAME.STRING 24093 . 25518)) (25520 34886 (READ-BDF 25520 . 34886)) (34888 35211 (
READ-DELIMITED-LIST-FROM-STRING 34888 . 35211)) (35213 42211 (READ-GLYPH 35213 . 42211)) (42213 43494
(WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE 42213 . 43494)) (43496 45913 (XLFD-SPLIT-FONT-NAME 43496 . 45913)
) (45915 48927 (XLFD-TO-FACE 45915 . 48927)))))
(IL:FILEMAP (NIL (3029 9967 (BDF-TO-CHARSETINFO 3029 . 9967)) (9969 16191 (BDF-TO-FONTDESCRIPTOR 9969
. 16191)) (16193 20126 (BUILD-COMPOSITE 16193 . 20126)) (20128 20877 (CHAR-PRESENT-BIT 20128 . 20877)
) (20879 21163 (COUNT-MCHARS 20879 . 21163)) (21165 24200 (GLYPHS-BY-CHARSET 21165 . 24200)) (24202
25627 (PACKFILENAME.STRING 24202 . 25627)) (25629 35104 (READ-BDF 25629 . 35104)) (35106 35429 (
READ-DELIMITED-LIST-FROM-STRING 35106 . 35429)) (35431 42429 (READ-GLYPH 35431 . 42429)) (42431 43712
(WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE 42431 . 43712)) (43714 46131 (XLFD-SPLIT-FONT-NAME 43714 . 46131)
) (46133 49145 (XLFD-TO-FACE 46133 . 49145)))))
IL:STOP

Binary file not shown.

Binary file not shown.