FONT, EDITFONT: Cleanup strike font reading and writing (#845)
EDITFONThad its own slightly different version. Now centralized in FONT with slight adjustments to internal interfaces. Note that we don't have a way of writing AC font files, as near as I can tell
This commit is contained in:
377
sources/FONT
377
sources/FONT
@@ -1,12 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED "26-Jun-2022 13:00:17" {DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>FONT.;2 188234
|
||||
(FILECREATED "12-Jul-2022 15:09:31" {DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>FONT.;11 187571
|
||||
|
||||
:CHANGES-TO (VARS FONTCOMS)
|
||||
(FNS \CREATE-REAL-CHARSET.DISPLAY)
|
||||
:CHANGES-TO (FNS \INSTALLCHARSETINFO \CREATECHARSET WRITESTRIKEFONTFILE \READSTRIKEFONTFILE)
|
||||
(VARS FONTCOMS)
|
||||
|
||||
:PREVIOUS-DATE " 9-Feb-2021 11:39:44"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>FONT.;1)
|
||||
:PREVIOUS-DATE "11-Jul-2022 23:05:20"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>FONT.;3)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -98,7 +98,7 @@ Copyright (c) 1981-1994, 1999, 2021 by Venue & Xerox Corporation.
|
||||
(FUNCTIONS \CREATEKERNELEMENT \FSETLEFTKERN \FGETLEFTKERN)
|
||||
(CONSTANTS (\MAXNSCHAR 65535]
|
||||
(COMS (* ; "NS Character specific code")
|
||||
(FNS \CREATECHARSET)
|
||||
(FNS \CREATECHARSET \INSTALLCHARSETINFO)
|
||||
(GLOBALVARS DISPLAYFONTCOERCIONS MISSINGDISPLAYFONTCOERCIONS
|
||||
MISSINGCHARSETDISPLAYFONTCOERCIONS CHARSETERRORFLG)
|
||||
(INITVARS (DISPLAYFONTCOERCIONS NIL)
|
||||
@@ -2425,66 +2425,61 @@ Copyright (c) 1981-1994, 1999, 2021 by Venue & Xerox Corporation.
|
||||
(DEFINEQ
|
||||
|
||||
(\READSTRIKEFONTFILE
|
||||
[LAMBDA (STRM FAMILY SIZE FACE) (* ; "Edited 4-Dec-92 12:11 by jds")
|
||||
[LAMBDA (STRM FAMILY SIZE FACE) (* ; "Edited 12-Jul-2022 09:19 by rmk")
|
||||
(* ; "Edited 4-Dec-92 12:11 by jds")
|
||||
(* ;
|
||||
"STRM has already been determined to be a vanilla strike-format file.")
|
||||
"STRM has already been determined to be a vanilla strike-format file.")
|
||||
(* ; "returns a charsetinfo")
|
||||
(COND
|
||||
((NEQ 2 (GETFILEPTR STRM))
|
||||
(SETFILEPTR STRM 2)))
|
||||
(PROG (CSINFO NUMBCODES RW BITMAP OFFSETS FIRSTCHAR LASTCHAR HEIGHT WIDTHS)
|
||||
(SETQ CSINFO (create CHARSETINFO))
|
||||
(SETQ FIRSTCHAR (\WIN STRM)) (* ; "minimum ascii code")
|
||||
(SETQ LASTCHAR (\WIN STRM)) (* ; "maximum ascii code")
|
||||
(\WIN STRM) (* ;
|
||||
"MaxWidth which isn't used by anyone.")
|
||||
(\WIN STRM) (* ;
|
||||
"number of words in this StrikeBody")
|
||||
(replace (CHARSETINFO CHARSETASCENT) of CSINFO with (\WIN STRM))
|
||||
(LET (CSINFO NUMBCODES RW BITMAP OFFSETS FIRSTCHAR LASTCHAR HEIGHT WIDTHS)
|
||||
(SETQ CSINFO (create CHARSETINFO))
|
||||
(SETQ FIRSTCHAR (\WIN STRM)) (* ; "minimum ascii code")
|
||||
(SETQ LASTCHAR (\WIN STRM)) (* ; "maximum ascii code")
|
||||
(\WIN STRM) (* ;
|
||||
"MaxWidth which isn't used by anyone.")
|
||||
(\WIN STRM) (* ;
|
||||
"number of words in this StrikeBody")
|
||||
(replace (CHARSETINFO CHARSETASCENT) of CSINFO with (\WIN STRM))
|
||||
(* ;
|
||||
"ascent in scan lines (=FBBdy+FBBoy)")
|
||||
(replace (CHARSETINFO CHARSETDESCENT) of CSINFO with (\WIN STRM))
|
||||
"ascent in scan lines (=FBBdy+FBBoy)")
|
||||
(replace (CHARSETINFO CHARSETDESCENT) of CSINFO with (\WIN STRM))
|
||||
(* ; "descent in scan-lines (=FBBoy)")
|
||||
(\WIN STRM) (* ;
|
||||
"offset in bits (<0 for kerning, else 0, =FBBox)")
|
||||
(SETQ RW (\WIN STRM)) (* ; "raster width of bitmap")
|
||||
(\WIN STRM) (* ;
|
||||
"offset in bits (<0 for kerning, else 0, =FBBox)")
|
||||
(SETQ RW (\WIN STRM)) (* ; "raster width of bitmap")
|
||||
(* ; "height of bitmap")
|
||||
|
||||
(* ;; "JDS 12/4/92: Apparently, these fields can be signed values, if all chars, e.g., ride above the base line.")
|
||||
(* ;; "JDS 12/4/92: Apparently, these fields can be signed values, if all chars, e.g., ride above the base line.")
|
||||
|
||||
(SETQ HEIGHT (IPLUS (SIGNED (fetch (CHARSETINFO CHARSETASCENT) of CSINFO)
|
||||
16)
|
||||
(SIGNED (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO)
|
||||
16)))
|
||||
(SETQ BITMAP (BITMAPCREATE (UNFOLD RW BITSPERWORD)
|
||||
HEIGHT))
|
||||
(\BINS STRM (fetch BITMAPBASE of BITMAP)
|
||||
0
|
||||
(UNFOLD (ITIMES RW HEIGHT)
|
||||
BYTESPERWORD)) (* ; "read bits into bitmap")
|
||||
(replace (CHARSETINFO CHARSETBITMAP) of CSINFO with BITMAP)
|
||||
(SETQ NUMBCODES (IPLUS (IDIFFERENCE LASTCHAR FIRSTCHAR)
|
||||
3)) (* (SETQ OFFSETS (ARRAY
|
||||
(IPLUS \MAXCHAR 3)
|
||||
(QUOTE SMALLPOSP) 0 0)))
|
||||
(SETQ OFFSETS (fetch (CHARSETINFO OFFSETS) of CSINFO))
|
||||
(SETQ HEIGHT (IPLUS (SIGNED (fetch (CHARSETINFO CHARSETASCENT) of CSINFO)
|
||||
16)
|
||||
(SIGNED (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO)
|
||||
16)))
|
||||
(SETQ BITMAP (BITMAPCREATE (UNFOLD RW BITSPERWORD)
|
||||
HEIGHT))
|
||||
(\BINS STRM (fetch BITMAPBASE of BITMAP)
|
||||
0
|
||||
(UNFOLD (ITIMES RW HEIGHT)
|
||||
BYTESPERWORD)) (* ; "read bits into bitmap")
|
||||
(replace (CHARSETINFO CHARSETBITMAP) of CSINFO with BITMAP)
|
||||
(SETQ NUMBCODES (IPLUS (IDIFFERENCE LASTCHAR FIRSTCHAR)
|
||||
3)) (* ;
|
||||
"(SETQ OFFSETS (ARRAY (IPLUS \MAXCHAR 3) (QUOTE SMALLPOSP) 0 0))")
|
||||
(SETQ OFFSETS (fetch (CHARSETINFO OFFSETS) of CSINFO))
|
||||
(* ; "initialise the offsets to 0")
|
||||
(for I from 0 to (IPLUS \MAXTHINCHAR 2) do (\FSETOFFSET OFFSETS I 0))
|
||||
(* (AIN OFFSETS FIRSTCHAR NUMBCODES
|
||||
STRM))
|
||||
(for I from FIRSTCHAR as J from 1 to NUMBCODES
|
||||
do (\FSETOFFSET OFFSETS I (\WIN STRM)))
|
||||
(SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO))
|
||||
(for I from 0 to (IPLUS \MAXTHINCHAR 2) do (\FSETWIDTH WIDTHS I 0))
|
||||
(* (replace WIDTHS of
|
||||
(CHARSETINFO CSINFO) with
|
||||
(ARRAY (IPLUS \MAXCHAR 3)
|
||||
(QUOTE SMALLPOSP) 0 0)))
|
||||
(\FONTRESETCHARWIDTHS CSINFO FIRSTCHAR LASTCHAR)
|
||||
(replace (CHARSETINFO IMAGEWIDTHS) of CSINFO with (fetch (CHARSETINFO
|
||||
WIDTHS)
|
||||
of CSINFO))
|
||||
(RETURN CSINFO])
|
||||
(for I from 0 to (IPLUS \MAXTHINCHAR 2) do (\FSETOFFSET OFFSETS I 0))
|
||||
(* ;
|
||||
"(AIN OFFSETS FIRSTCHAR NUMBCODES STRM)")
|
||||
(for I from FIRSTCHAR as J from 1 to NUMBCODES do (\FSETOFFSET OFFSETS I (\WIN STRM)))
|
||||
(SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO))
|
||||
(for I from 0 to (IPLUS \MAXTHINCHAR 2) do (\FSETWIDTH WIDTHS I 0))
|
||||
(* ;
|
||||
"(replace WIDTHS of (CHARSETINFO CSINFO) with (ARRAY (IPLUS \MAXCHAR 3) (QUOTE SMALLPOSP) 0 0))")
|
||||
(\FONTRESETCHARWIDTHS CSINFO FIRSTCHAR LASTCHAR)
|
||||
(replace (CHARSETINFO IMAGEWIDTHS) of CSINFO with (fetch (CHARSETINFO WIDTHS) of CSINFO))
|
||||
CSINFO])
|
||||
|
||||
(\SFMAKEBOLD
|
||||
[LAMBDA (CSINFO) (* gbn "25-Jul-85 04:52")
|
||||
@@ -2693,107 +2688,60 @@ Copyright (c) 1981-1994, 1999, 2021 by Venue & Xerox Corporation.
|
||||
(DEFINEQ
|
||||
|
||||
(WRITESTRIKEFONTFILE
|
||||
[LAMBDA (FONT CHARSET FILENAME) (* ; "Edited 30-Mar-87 20:25 by FS")
|
||||
|
||||
(* ;; "Write strike FILE using info in FONT, AND CHARSET number.")
|
||||
|
||||
(* ;; "This code only works if original file was STRIKE. Otherwise, a new CSINFO is dummied up and it is used instead. So, CSINFO when read in might be different than the one written out.")
|
||||
|
||||
(PROG (STREAM CSINFO FIRSTCHAR LASTCHAR WIDTHS OFFSETS IMWIDTHS MAXWIDTH RASTERWIDTH LENGTH
|
||||
DUMMYCHAR DUMMYOFFSET DUMMYINDEX WIDTH OFFSET CODE MAXCODE)
|
||||
(SETQ MAXCODE 255) (* ; "Max charcode")
|
||||
(SETQ DUMMYINDEX 256) (* ; "Dummy char marker")
|
||||
(COND
|
||||
((NOT (FONTP FONT))
|
||||
(LISPERROR "ILLEGAL ARG" FONT)))
|
||||
(COND
|
||||
((NULL CHARSET)
|
||||
(SETQ CHARSET 0))
|
||||
((NOT (AND (IGEQ CHARSET 0)
|
||||
(ILESSP CHARSET \MAXCHARSET)))
|
||||
(LISPERROR "ILLEGAL ARG" CHARSET)))
|
||||
(SETQ CSINFO (STRIKECSINFO (\GETCHARSETINFO CHARSET FONT T)))
|
||||
[LAMBDA (FONT CHARSET FILE) (* ; "Edited 12-Jul-2022 14:36 by rmk")
|
||||
(* kbr%: "21-Oct-85 15:08")
|
||||
(* ;
|
||||
"Guarantee its a STRIKE font CSINFO.")
|
||||
(COND
|
||||
((NULL CSINFO)
|
||||
(ERROR "Couldn't find charset " CHARSET)))
|
||||
(SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO))
|
||||
(SETQ OFFSETS (fetch (CHARSETINFO OFFSETS) of CSINFO))
|
||||
(SETQ IMWIDTHS (fetch (CHARSETINFO IMAGEWIDTHS) of CSINFO))
|
||||
|
||||
(* ;; "Index 256 contains a dummy width; use it's value to determine missing chars")
|
||||
|
||||
(SETQ DUMMYOFFSET (\FGETOFFSET OFFSETS DUMMYINDEX))
|
||||
[SETQ FIRSTCHAR (for I from 0 to MAXCODE
|
||||
thereis (NOT (EQ (\FGETOFFSET OFFSETS I)
|
||||
DUMMYOFFSET]
|
||||
[SETQ LASTCHAR (for I from MAXCODE to 0 by -1
|
||||
thereis (NOT (EQ (\FGETOFFSET OFFSETS I)
|
||||
DUMMYOFFSET]
|
||||
(SETQ DUMMYCHAR (ADD1 LASTCHAR))
|
||||
[SETQ STREAM (OPENSTREAM FILENAME 'OUTPUT 'NEW '((TYPE BINARY]
|
||||
|
||||
(* ;; "")
|
||||
|
||||
(* ;; "STRIKE Header")
|
||||
|
||||
(* ;; "")
|
||||
|
||||
(\WOUT STREAM 32768)
|
||||
(\WOUT STREAM FIRSTCHAR)
|
||||
(\WOUT STREAM LASTCHAR)
|
||||
(SETQ MAXWIDTH 0)
|
||||
[for I from 0 to DUMMYINDEX do (SETQ MAXWIDTH (IMAX MAXWIDTH
|
||||
(\FGETWIDTH WIDTHS I]
|
||||
(\WOUT STREAM MAXWIDTH)
|
||||
|
||||
(* ;; "")
|
||||
|
||||
(* ;; "STRIKE Body")
|
||||
|
||||
(* ;; "")
|
||||
|
||||
(* ;; "Length of body")
|
||||
|
||||
(SETQ RASTERWIDTH (fetch (BITMAP BITMAPRASTERWIDTH) of (fetch (CHARSETINFO
|
||||
CHARSETBITMAP)
|
||||
of CSINFO)))
|
||||
(SETQ LENGTH (IPLUS 8 (IDIFFERENCE LASTCHAR FIRSTCHAR)
|
||||
(ITIMES (fetch (FONTDESCRIPTOR \SFHeight) of FONT)
|
||||
RASTERWIDTH)))
|
||||
(\WOUT STREAM LENGTH)
|
||||
|
||||
(* ;; "Ascent, Descent, Xoffset (no longer used) and Rasterwidth.")
|
||||
|
||||
(\WOUT STREAM (fetch (CHARSETINFO CHARSETASCENT) of CSINFO))
|
||||
(\WOUT STREAM (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO))
|
||||
(\WOUT STREAM 0) (* ;
|
||||
"offset in bits (<0 for kerning, else 0, =FBBox)")
|
||||
(\WOUT STREAM RASTERWIDTH)
|
||||
|
||||
(* ;; "Bitmap")
|
||||
|
||||
[\BOUTS STREAM (fetch (BITMAP BITMAPBASE) of (fetch (CHARSETINFO CHARSETBITMAP)
|
||||
of CSINFO))
|
||||
0
|
||||
(ITIMES 2 RASTERWIDTH (IPLUS (fetch (CHARSETINFO CHARSETASCENT) of CSINFO)
|
||||
(fetch (CHARSETINFO CHARSETDESCENT) of CSINFO]
|
||||
|
||||
(* ;; "Offsets")
|
||||
|
||||
(SETQ CODE 0)
|
||||
(\WOUT STREAM CODE)
|
||||
(for I from FIRSTCHAR to DUMMYCHAR
|
||||
do (SETQ OFFSET (\FGETOFFSET OFFSETS I))
|
||||
(SETQ WIDTH (\FGETWIDTH WIDTHS I))
|
||||
[COND
|
||||
((AND (IEQP OFFSET DUMMYOFFSET)
|
||||
(NOT (IEQP I DUMMYCHAR))) (* ; "CODE stays the same.")
|
||||
)
|
||||
(T (SETQ CODE (IPLUS CODE WIDTH]
|
||||
(\WOUT STREAM CODE))
|
||||
(CLOSEF STREAM])
|
||||
"Write strike FILE using info in FONT. *")
|
||||
(CL:UNLESS (FONTP FONT)
|
||||
(LISPERROR "ILLEGAL ARG" FONT))
|
||||
(CL:UNLESS CHARSET (SETQ CHARSET 0))
|
||||
(CL:UNLESS (AND (IGEQ CHARSET 0)
|
||||
(ILEQ CHARSET \MAXCHARSET))
|
||||
(LISPERROR "ILLEGAL ARG" CHARSET))
|
||||
(LET (STREAM CSINFO FIRSTCHAR LASTCHAR WIDTHS MAXWIDTH LENGTH RASTERWIDTH DUMMYCHAR DUMMYOFFSET
|
||||
PREVIOUSOFFSET OFFSETS)
|
||||
(SETQ CSINFO (\GETCHARSETINFO CHARSET FONT T))
|
||||
(CL:UNLESS CSINFO (ERROR "Couldn't find charset " CHARSET))
|
||||
(SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO))
|
||||
(SETQ OFFSETS (fetch (CHARSETINFO OFFSETS) of CSINFO))
|
||||
(SETQ DUMMYOFFSET (\FGETOFFSET OFFSETS DUMMYINDEX))
|
||||
[SETQ FIRSTCHAR (for I from 0 to MAXCODE thereis (NOT (EQ (\FGETOFFSET OFFSETS I)
|
||||
DUMMYOFFSET]
|
||||
[SETQ LASTCHAR (for I from MAXCODE to 0 by -1 thereis (NOT (EQ (\FGETOFFSET OFFSETS I)
|
||||
DUMMYOFFSET]
|
||||
(SETQ DUMMYCHAR (ADD1 LASTCHAR))
|
||||
[SETQ STREAM (OPENSTREAM FILE 'OUTPUT 'NEW '((TYPE BINARY]
|
||||
(\WOUT STREAM 32768) (* ; "STRIKE HEADER. *")
|
||||
(\WOUT STREAM FIRSTCHAR)
|
||||
(\WOUT STREAM LASTCHAR)
|
||||
(SETQ MAXWIDTH 0)
|
||||
[for I from 0 to DUMMYINDEX do (SETQ MAXWIDTH (IMAX MAXWIDTH (\FGETWIDTH WIDTHS I]
|
||||
(\WOUT STREAM MAXWIDTH) (* ; "STRIKE BODY. *")
|
||||
(* ; "Length. *")
|
||||
(SETQ RASTERWIDTH (fetch (BITMAP BITMAPRASTERWIDTH) of (fetch (CHARSETINFO CHARSETBITMAP)
|
||||
of CSINFO)))
|
||||
(SETQ LENGTH (IPLUS 8 (IDIFFERENCE LASTCHAR FIRSTCHAR)
|
||||
(ITIMES (fetch (FONTDESCRIPTOR \SFHeight) of FONT)
|
||||
RASTERWIDTH)))
|
||||
(\WOUT STREAM LENGTH) (* ;
|
||||
"Ascent, Descent, Xoffset (no longer used) and Rasterwidth. *")
|
||||
(\WOUT STREAM (fetch (CHARSETINFO CHARSETASCENT) of CSINFO))
|
||||
(\WOUT STREAM (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO))
|
||||
(\WOUT STREAM 0)
|
||||
(\WOUT STREAM RASTERWIDTH) (* ; "Bitmap. *")
|
||||
[\BOUTS STREAM (fetch (BITMAP BITMAPBASE) of (fetch (CHARSETINFO CHARSETBITMAP) of CSINFO))
|
||||
0
|
||||
(ITIMES 2 RASTERWIDTH (IPLUS (fetch (CHARSETINFO CHARSETASCENT) of CSINFO)
|
||||
(fetch (CHARSETINFO CHARSETDESCENT) of CSINFO]
|
||||
(* ; "Offsets. *")
|
||||
(for I WIDTH OFFSET (CODE _ 0) from FIRSTCHAR to DUMMYCHAR first (\WOUT STREAM CODE)
|
||||
do (SETQ OFFSET (\FGETOFFSET OFFSETS I))
|
||||
(SETQ WIDTH (\FGETWIDTH WIDTHS I))
|
||||
(CL:UNLESS (AND (IEQP OFFSET DUMMYOFFSET)
|
||||
(NOT (IEQP I DUMMYCHAR)))
|
||||
(ADD CODE WIDTH))
|
||||
(\WOUT STREAM CODE))
|
||||
(CLOSEF STREAM])
|
||||
|
||||
(STRIKECSINFO
|
||||
[LAMBDA (CSINFO) (* ; "Edited 27-Apr-89 13:39 by atm")
|
||||
@@ -3193,45 +3141,56 @@ Copyright (c) 1981-1994, 1999, 2021 by Venue & Xerox Corporation.
|
||||
(DEFINEQ
|
||||
|
||||
(\CREATECHARSET
|
||||
[LAMBDA (CHARSET FONT NOSLUG?) (* ; "Edited 8-May-93 23:42 by rmk:")
|
||||
[LAMBDA (CHARSET FONT NOSLUG?) (* ; "Edited 12-Jul-2022 14:37 by rmk")
|
||||
(* ; "Edited 8-May-93 23:42 by rmk:")
|
||||
(* ; "Edited 4-Dec-92 11:43 by jds")
|
||||
|
||||
(* ;; "Creates and returns the CHARSETINFO for charset CHARSET in fontdesc FONT, installing it in fonts FONTCHARSETVECTOR")
|
||||
(* ;
|
||||
"NOSLUG? means don't create an empty (slug) csinfo if the charset is not found, just return NIL")
|
||||
"NOSLUG? means don't create an empty (slug) csinfo if the charset is not found, just return NIL")
|
||||
(DECLARE (GLOBALVARS \DISPLAYSTREAMTYPES))
|
||||
(AND (IGREATERP CHARSET \MAXCHARSET)
|
||||
(\ILLEGAL.ARG CHARSET))
|
||||
(PROG [CSINFO (CREATEFN (COND
|
||||
((FMEMB (FONTPROP FONT 'DEVICE)
|
||||
\DISPLAYSTREAMTYPES)
|
||||
(FUNCTION \CREATECHARSET.DISPLAY))
|
||||
(T (CADR (ASSOC 'CREATECHARSET (CDR (ASSOC (FONTPROP FONT
|
||||
'DEVICE)
|
||||
IMAGESTREAMTYPES]
|
||||
(CL:WHEN (OR (ILESSP CHARSET 0)
|
||||
(IGREATERP CHARSET \MAXCHARSET))
|
||||
(\ILLEGAL.ARG CHARSET))
|
||||
(LET [CSINFO (CREATEFN (COND
|
||||
((FMEMB (FONTPROP FONT 'DEVICE)
|
||||
\DISPLAYSTREAMTYPES)
|
||||
(FUNCTION \CREATECHARSET.DISPLAY))
|
||||
(T (CADR (ASSOC 'CREATECHARSET (CDR (ASSOC (FONTPROP FONT 'DEVICE)
|
||||
IMAGESTREAMTYPES]
|
||||
|
||||
(* ;; "Create a descriptor of info for that charset, and use it to fill things in.")
|
||||
(* ;; "Create a descriptor of info for that charset, and use it to fill things in.")
|
||||
|
||||
(COND
|
||||
([NOT (SETQ CSINFO (APPLY CREATEFN (APPEND (FONTPROP FONT 'DEVICESPEC)
|
||||
(LIST CHARSET FONT NOSLUG?]
|
||||
(CL:WHEN [SETQ CSINFO (APPLY CREATEFN (APPEND (FONTPROP FONT 'DEVICESPEC)
|
||||
(LIST CHARSET FONT NOSLUG?]
|
||||
(* ;
|
||||
"the create method returned NIL--NOSLUG? must be T.")
|
||||
(RETURN NIL)))
|
||||
(replace \SFAscent of FONT with (IMAX (fetch \SFAscent of FONT)
|
||||
(SIGNED (fetch CHARSETASCENT
|
||||
"the create method did not return NIL--NOSLUG? must be T. ")
|
||||
(\INSTALLCHARSETINFO FONT CSINFO CHARSET))])
|
||||
|
||||
(\INSTALLCHARSETINFO
|
||||
[LAMBDA (FONT CSINFO CHARSET) (* ; "Edited 12-Jul-2022 15:08 by rmk")
|
||||
(replace \SFAscent of FONT with (IMAX (fetch \SFAscent of FONT)
|
||||
(SIGNED (fetch CHARSETASCENT of CSINFO)
|
||||
16)))
|
||||
(replace (FONTDESCRIPTOR \SFDescent) of FONT with (IMAX (fetch (FONTDESCRIPTOR \SFDescent)
|
||||
of FONT)
|
||||
(SIGNED (fetch (CHARSETINFO
|
||||
CHARSETDESCENT)
|
||||
of CSINFO)
|
||||
16)))
|
||||
(replace \SFDescent of FONT with (IMAX (fetch \SFDescent of FONT)
|
||||
(SIGNED (ffetch CHARSETDESCENT
|
||||
of CSINFO)
|
||||
16)))
|
||||
(replace \SFHeight of FONT with (IPLUS (fetch \SFAscent of FONT)
|
||||
(ffetch \SFDescent of FONT)))
|
||||
(* ;
|
||||
"jtm: height = ascent + descent, not (IMAX fontHeight charSetHeight)")
|
||||
(RETURN (\SETCHARSETINFO (ffetch FONTCHARSETVECTOR of FONT)
|
||||
CHARSET CSINFO])
|
||||
"jtm: height = ascent + descent, not (IMAX fontHeight charSetHeight)")
|
||||
(replace (FONTDESCRIPTOR \SFHeight) of FONT with (IPLUS (fetch (FONTDESCRIPTOR \SFAscent)
|
||||
of FONT)
|
||||
(ffetch (FONTDESCRIPTOR \SFDescent)
|
||||
of FONT)))
|
||||
(\SETCHARSETINFO (fetch (FONTDESCRIPTOR FONTCHARSETVECTOR) of FONT)
|
||||
CHARSET CSINFO)
|
||||
|
||||
(* ;; "\AVGCHARWIDTH has to be confused after the CSINFO is stuck in.")
|
||||
|
||||
(replace (FONTDESCRIPTOR FONTAVGCHARWIDTH) of FONT with (\AVGCHARWIDTH FONT))
|
||||
CSINFO])
|
||||
)
|
||||
(DECLARE%: DOEVAL@COMPILE DONTCOPY
|
||||
|
||||
@@ -3348,30 +3307,30 @@ Copyright (c) 1981-1994, 1999, 2021 by Venue & Xerox Corporation.
|
||||
(PUTPROPS FONT COPYRIGHT ("Venue & Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989
|
||||
1990 1991 1992 1993 1994 1999 2021))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (8745 18264 (CHARWIDTH 8755 . 9540) (CHARWIDTHY 9542 . 10912) (STRINGWIDTH 10914 . 12007
|
||||
) (\CHARWIDTH.DISPLAY 12009 . 12422) (\STRINGWIDTH.DISPLAY 12424 . 12848) (\STRINGWIDTH.GENERIC 12850
|
||||
. 18262)) (18265 24647 (DEFAULTFONT 18275 . 20108) (FONTCLASS 20110 . 22272) (FONTCLASSUNPARSE 22274
|
||||
. 23173) (FONTCLASSCOMPONENT 23175 . 23684) (SETFONTCLASSCOMPONENT 23686 . 24645)) (25321 38053 (
|
||||
FONTCREATE 25331 . 34598) (\FONT.SYMBOLMEMB 34600 . 34830) (\FONT.SYMBOLASSOC 34832 . 35990) (
|
||||
\FONT.COMPARESYMBOL 35992 . 38051)) (38092 42716 (FONTASCENT 38102 . 38270) (FONTDESCENT 38272 . 38541
|
||||
) (FONTHEIGHT 38543 . 38729) (FONTPROP 38731 . 42174) (\AVGCHARWIDTH 42176 . 42714)) (42763 55402 (
|
||||
GETCHARBITMAP 42773 . 45663) (PUTCHARBITMAP 45665 . 53722) (MOVECHARBITMAP 53724 . 55400)) (55403
|
||||
139942 (FONTCOPY 55413 . 60721) (FONTSAVAILABLE 60723 . 65928) (FONTFILEFORMAT 65930 . 67554) (FONTP
|
||||
67556 . 67855) (FONTUNPARSE 67857 . 70421) (SETFONTDESCRIPTOR 70423 . 72132) (CHARCODEP 72134 . 72495)
|
||||
(EDITCHAR 72497 . 72926) (\STREAMCHARWIDTH 72928 . 77092) (\UNITWIDTHSVECTOR 77094 . 77457) (
|
||||
\CREATEDISPLAYFONT 77459 . 78212) (\CREATECHARSET.DISPLAY 78214 . 81130) (\CREATE-REAL-CHARSET.DISPLAY
|
||||
81132 . 88036) (\BUILDSLUGCSINFO 88038 . 89481) (\SEARCHDISPLAYFONTFILES 89483 . 91416) (
|
||||
\SEARCHFONTFILES 91418 . 94729) (\FINDFONTFILE 94731 . 95922) (\FONTSYMBOL 95924 . 96574) (
|
||||
\DEVICESYMBOL 96576 . 97445) (\FONTFACE 97447 . 104637) (\FONTFACE.COLOR 104639 . 111559) (
|
||||
\FONTFILENAME 111561 . 114976) (\FONTFILENAME.OLD 114978 . 117927) (\FONTFILENAME.NEW 117929 . 120186)
|
||||
(\FONTINFOFROMFILENAME 120188 . 123302) (\FONTINFOFROMFILENAME.OLD 123304 . 125581) (\GETFONTDESC
|
||||
125583 . 125974) (\COERCEFONTDESC 125976 . 131361) (\LOOKUPFONT 131363 . 132707) (\LOOKUPFONTSINCORE
|
||||
132709 . 134782) (\READDISPLAYFONTFILE 134784 . 139940)) (140845 157895 (\READSTRIKEFONTFILE 140855 .
|
||||
145383) (\SFMAKEBOLD 145385 . 147781) (\SFMAKEITALIC 147783 . 150686) (\SFMAKEROTATEDFONT 150688 .
|
||||
152089) (\SFROTATECSINFO 152091 . 152728) (\SFROTATEFONTCHARACTERS 152730 . 153110) (
|
||||
\SFFIXOFFSETSAFTERROTATION 153112 . 155251) (\SFROTATECSINFOOFFSETS 155253 . 156522) (\SFMAKECOLOR
|
||||
156524 . 157893)) (157896 166207 (WRITESTRIKEFONTFILE 157906 . 162747) (STRIKECSINFO 162749 . 166205))
|
||||
(180252 180415 (\CREATEKERNELEMENT 180252 . 180415)) (180417 180545 (\FSETLEFTKERN 180417 . 180545))
|
||||
(180547 180641 (\FGETLEFTKERN 180547 . 180641)) (180810 183666 (\CREATECHARSET 180820 . 183664)) (
|
||||
184821 186573 (\FONTRESETCHARWIDTHS 184831 . 186571)))))
|
||||
(FILEMAP (NIL (8812 18331 (CHARWIDTH 8822 . 9607) (CHARWIDTHY 9609 . 10979) (STRINGWIDTH 10981 . 12074
|
||||
) (\CHARWIDTH.DISPLAY 12076 . 12489) (\STRINGWIDTH.DISPLAY 12491 . 12915) (\STRINGWIDTH.GENERIC 12917
|
||||
. 18329)) (18332 24714 (DEFAULTFONT 18342 . 20175) (FONTCLASS 20177 . 22339) (FONTCLASSUNPARSE 22341
|
||||
. 23240) (FONTCLASSCOMPONENT 23242 . 23751) (SETFONTCLASSCOMPONENT 23753 . 24712)) (25388 38120 (
|
||||
FONTCREATE 25398 . 34665) (\FONT.SYMBOLMEMB 34667 . 34897) (\FONT.SYMBOLASSOC 34899 . 36057) (
|
||||
\FONT.COMPARESYMBOL 36059 . 38118)) (38159 42783 (FONTASCENT 38169 . 38337) (FONTDESCENT 38339 . 38608
|
||||
) (FONTHEIGHT 38610 . 38796) (FONTPROP 38798 . 42241) (\AVGCHARWIDTH 42243 . 42781)) (42830 55469 (
|
||||
GETCHARBITMAP 42840 . 45730) (PUTCHARBITMAP 45732 . 53789) (MOVECHARBITMAP 53791 . 55467)) (55470
|
||||
140009 (FONTCOPY 55480 . 60788) (FONTSAVAILABLE 60790 . 65995) (FONTFILEFORMAT 65997 . 67621) (FONTP
|
||||
67623 . 67922) (FONTUNPARSE 67924 . 70488) (SETFONTDESCRIPTOR 70490 . 72199) (CHARCODEP 72201 . 72562)
|
||||
(EDITCHAR 72564 . 72993) (\STREAMCHARWIDTH 72995 . 77159) (\UNITWIDTHSVECTOR 77161 . 77524) (
|
||||
\CREATEDISPLAYFONT 77526 . 78279) (\CREATECHARSET.DISPLAY 78281 . 81197) (\CREATE-REAL-CHARSET.DISPLAY
|
||||
81199 . 88103) (\BUILDSLUGCSINFO 88105 . 89548) (\SEARCHDISPLAYFONTFILES 89550 . 91483) (
|
||||
\SEARCHFONTFILES 91485 . 94796) (\FINDFONTFILE 94798 . 95989) (\FONTSYMBOL 95991 . 96641) (
|
||||
\DEVICESYMBOL 96643 . 97512) (\FONTFACE 97514 . 104704) (\FONTFACE.COLOR 104706 . 111626) (
|
||||
\FONTFILENAME 111628 . 115043) (\FONTFILENAME.OLD 115045 . 117994) (\FONTFILENAME.NEW 117996 . 120253)
|
||||
(\FONTINFOFROMFILENAME 120255 . 123369) (\FONTINFOFROMFILENAME.OLD 123371 . 125648) (\GETFONTDESC
|
||||
125650 . 126041) (\COERCEFONTDESC 126043 . 131428) (\LOOKUPFONT 131430 . 132774) (\LOOKUPFONTSINCORE
|
||||
132776 . 134849) (\READDISPLAYFONTFILE 134851 . 140007)) (140912 157636 (\READSTRIKEFONTFILE 140922 .
|
||||
145124) (\SFMAKEBOLD 145126 . 147522) (\SFMAKEITALIC 147524 . 150427) (\SFMAKEROTATEDFONT 150429 .
|
||||
151830) (\SFROTATECSINFO 151832 . 152469) (\SFROTATEFONTCHARACTERS 152471 . 152851) (
|
||||
\SFFIXOFFSETSAFTERROTATION 152853 . 154992) (\SFROTATECSINFOOFFSETS 154994 . 156263) (\SFMAKECOLOR
|
||||
156265 . 157634)) (157637 164890 (WRITESTRIKEFONTFILE 157647 . 161430) (STRIKECSINFO 161432 . 164888))
|
||||
(178935 179098 (\CREATEKERNELEMENT 178935 . 179098)) (179100 179228 (\FSETLEFTKERN 179100 . 179228))
|
||||
(179230 179324 (\FGETLEFTKERN 179230 . 179324)) (179493 183003 (\CREATECHARSET 179503 . 181254) (
|
||||
\INSTALLCHARSETINFO 181256 . 183001)) (184158 185910 (\FONTRESETCHARWIDTHS 184168 . 185908)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user