From a54888734e045bb9ab372ff9cf67d182e3e9d17f Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Sun, 17 Jul 2022 21:22:56 -0700 Subject: [PATCH] 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 --- lispusers/EDITFONT | 262 +++++++--------------------- lispusers/EDITFONT.LCOM | Bin 12638 -> 10164 bytes sources/FONT | 377 ++++++++++++++++++---------------------- sources/FONT.LCOM | Bin 44190 -> 44482 bytes 4 files changed, 232 insertions(+), 407 deletions(-) diff --git a/lispusers/EDITFONT b/lispusers/EDITFONT index c4c836a7..bd6f8fc8 100644 --- a/lispusers/EDITFONT +++ b/lispusers/EDITFONT @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "27-Jun-2022 10:59:12"  -{DSK}kaplan>local>medley3.5>working-medley>lispusers>EDITFONT.;5 38667 +(FILECREATED "12-Jul-2022 14:18:56"  +{DSK}kaplan>Local>medley3.5>working-medley>lispusers>EDITFONT.;10 28741 - :CHANGES-TO (FNS EDITFONT EF.EDIT) + :CHANGES-TO (FNS READSTRIKEFONTFILE) + (VARS EDITFONTCOMS) - :PREVIOUS-DATE "26-Aug-86 16:23:09" -{DSK}kaplan>local>medley3.5>working-medley>lispusers>EDITFONT.;1) + :PREVIOUS-DATE "27-Jun-2022 10:59:12" +{DSK}kaplan>local>medley3.5>working-medley>lispusers>EDITFONT.;5) (* ; " @@ -16,44 +17,26 @@ Copyright (c) 1985-1986 by Xerox Corporation. (PRETTYCOMPRINT EDITFONTCOMS) (RPAQQ EDITFONTCOMS - ((* EDITFONT -- By Kelly Roach. Need to LOAD EXPORTS.ALL and LOADFROM FONT in order to compile - this file. *) - (CONSTANTS (BITSPERWORD 16) - (BYTESPERWORD 2) - (MAXCODE 255) - (DUMMYINDEX 256)) + ((* EDITFONT -- By Kelly Roach. Need to LOAD EXPORTS.ALL in order to compile this file. *) (INITVARS (EF.MENU NIL) (EF.TITLEMENU NIL)) (RECORDS CHARITEM) (FNS EF.INIT EF.PROMPT EF.MESSAGE EF.CLOSEFN EF.CHARITEMS EF.BUTTONEVENTFN EF.WHENSELECTEDFN EF.EDITBM EF.MIDDLEBUTTONFN EF.CHANGESIZE EF.DELETE EF.ENTER EF.REPLACE EF.SAVE EF.BLANK - COPYFONT READSTRIKEFONTFILE WRITESTRIKEFONTFILE) + COPYFONT READSTRIKEFONTFILE) (FNS BLANKFONTCREATE EDITFONT) - (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) - FONT)) + (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (BITSPERWORD 16) + (BYTESPERWORD 2) + (MAXCODE 255) + (DUMMYINDEX 256)) + (FILES (LOADCOMP) + FONT)) (P (EF.INIT)))) -(* EDITFONT -- By Kelly Roach. Need to LOAD EXPORTS.ALL and LOADFROM FONT in order to compile this -file. *) +(* EDITFONT -- By Kelly Roach. Need to LOAD EXPORTS.ALL in order to compile this file. *) -(DECLARE%: EVAL@COMPILE - -(RPAQQ BITSPERWORD 16) - -(RPAQQ BYTESPERWORD 2) - -(RPAQQ MAXCODE 255) - -(RPAQQ DUMMYINDEX 256) - - -(CONSTANTS (BITSPERWORD 16) - (BYTESPERWORD 2) - (MAXCODE 255) - (DUMMYINDEX 256)) -) (RPAQ? EF.MENU NIL) @@ -466,166 +449,33 @@ file. *) (RETURN NEWFONT]) (READSTRIKEFONTFILE - [LAMBDA (FAMILY SIZE FACE FILE FONT CHARSET) (* kbr%: "14-Oct-85 11:16") - (* Very similar to \READSTRIKEFONTFILE - of SOURCES>FONT. - Returns fontdescriptor FONT. - *) - (PROG (STRM CSINFO NUMBCODES RW BITMAP OFFSETS FIRSTCHAR LASTCHAR HEIGHT WIDTHS) - (* This part imitates - \READSTRIKEFONTFILE *) - (SETQ STRM (OPENSTREAM FILE 'INPUT 'OLD)) - (SETQ CSINFO (create CHARSETINFO)) - (\WIN STRM) - (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)) - (* descent in scan-lines - (=FBBoy)) - (\WIN STRM) (* offset in bits (<0 for kerning, - else 0, =FBBox)) - (SETQ RW (\WIN STRM)) (* raster width of bitmap) - (* height of bitmap) - (SETQ HEIGHT (IPLUS (fetch (CHARSETINFO CHARSETASCENT) of CSINFO) - (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO))) - (SETQ BITMAP (BITMAPCREATE (UNFOLD RW BITSPERWORD) - HEIGHT)) - (\BINS STRM (fetch (BITMAP 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 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)) - (CLOSEF STRM) (* This part imitates - \CREATEDISPLAYFONT *) - (COND - ((NULL CHARSET) - (SETQ CHARSET 0))) - [COND - ((NULL FONT) - (SETQ FONT - (create FONTDESCRIPTOR - FONTDEVICE _ 'DISPLAY - FONTFAMILY _ FAMILY - FONTSIZE _ SIZE - FONTFACE _ FACE - \SFAscent _ 0 - \SFDescent _ 0 - \SFHeight _ 0 - ROTATION _ 0 - FONTDEVICESPEC _ (LIST FAMILY SIZE FACE 0 'DISPLAY] - (* This part imitates \CREATECHARSET. - *) - (replace (FONTDESCRIPTOR \SFAscent) of FONT with (IMAX (fetch (FONTDESCRIPTOR \SFAscent) - of FONT) - (fetch (CHARSETINFO CHARSETASCENT) - of CSINFO))) - (replace (FONTDESCRIPTOR \SFDescent) of FONT with (IMAX (fetch (FONTDESCRIPTOR \SFDescent) - of FONT) - (fetch (CHARSETINFO CHARSETDESCENT) - of CSINFO))) - [replace (FONTDESCRIPTOR \SFHeight) of FONT with (IMAX (fetch (FONTDESCRIPTOR \SFHeight) - of FONT) - (IPLUS (fetch (CHARSETINFO - CHARSETASCENT) - of CSINFO) - (fetch (CHARSETINFO - CHARSETDESCENT) - of CSINFO] - (\SETCHARSETINFO (fetch (FONTDESCRIPTOR FONTCHARSETVECTOR) of FONT) - CHARSET CSINFO) - (replace (FONTDESCRIPTOR FONTAVGCHARWIDTH) of FONT with (\AVGCHARWIDTH FONT)) - (RETURN FONT]) + [LAMBDA (FAMILY SIZE FACE FILE FONT CHARSET) -(WRITESTRIKEFONTFILE - [LAMBDA (FONT CHARSET FILE) (* kbr%: "21-Oct-85 15:08") - (* Write strike FILE using info in - FONT. *) - (PROG (STREAM CSINFO FIRSTCHAR LASTCHAR WIDTH MAXWIDTH LENGTH RASTERWIDTH DUMMYCHAR DUMMYOFFSET - OFFSET PREVIOUSOFFSET WIDTH CODE) - (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 (\GETCHARSETINFO CHARSET FONT T)) - (COND - ((NULL 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] - (* 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. *) - (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. *) - (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]) + (* ;; "Edited 12-Jul-2022 14:16 by rmk: Removed slightlly different implementations of \READSTRIKEFONTFILE and charset installation in favor of common code in FONT.") + + (* ;; "Edited 12-Jul-2022 13:33 by rmk") + (* kbr%: "14-Oct-85 11:16") + (CL:UNLESS CHARSET (SETQ CHARSET 0)) (* ; "Returns fontdescriptor FONT. *") + (LET (STRM CSINFO) + (SETQ STRM (OPENSTREAM FILE 'INPUT 'OLD)) + (\WIN STRM) + (SETQ CSINFO (\READSTRIKEFONTFILE STRM FAMILY SIZE FACE)) + (CLOSEF STRM) (* ; + "This part imitates \CREATEDISPLAYFONT *") + (CL:UNLESS FONT + [SETQ FONT + (create FONTDESCRIPTOR + FONTDEVICE _ 'DISPLAY + FONTFAMILY _ FAMILY + FONTSIZE _ SIZE + FONTFACE _ FACE + \SFAscent _ 0 + \SFDescent _ 0 + \SFHeight _ 0 + ROTATION _ 0 + FONTDEVICESPEC _ (LIST FAMILY SIZE FACE 0 'DISPLAY]) + (\INSTALLCHARSETINFO FONT CSINFO CHARSET) + FONT]) ) (DEFINEQ @@ -671,6 +521,23 @@ file. *) (WINDOWPROP WINDOW 'BUTTONEVENTFN 'EF.BUTTONEVENTFN]) ) (DECLARE%: EVAL@COMPILE DONTCOPY +(DECLARE%: EVAL@COMPILE + +(RPAQQ BITSPERWORD 16) + +(RPAQQ BYTESPERWORD 2) + +(RPAQQ MAXCODE 255) + +(RPAQQ DUMMYINDEX 256) + + +(CONSTANTS (BITSPERWORD 16) + (BYTESPERWORD 2) + (MAXCODE 255) + (DUMMYINDEX 256)) +) + (FILESLOAD (LOADCOMP) FONT) @@ -679,11 +546,10 @@ file. *) (EF.INIT) (PUTPROPS EDITFONT COPYRIGHT ("Xerox Corporation" 1985 1986)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1748 36280 (EF.INIT 1758 . 2484) (EF.PROMPT 2486 . 3068) (EF.MESSAGE 3070 . 3282) ( -EF.CLOSEFN 3284 . 3811) (EF.CHARITEMS 3813 . 6034) (EF.BUTTONEVENTFN 6036 . 6448) (EF.WHENSELECTEDFN -6450 . 6854) (EF.EDITBM 6856 . 8254) (EF.MIDDLEBUTTONFN 8256 . 8501) (EF.CHANGESIZE 8503 . 9722) ( -EF.DELETE 9724 . 10489) (EF.ENTER 10491 . 11322) (EF.REPLACE 11324 . 12187) (EF.SAVE 12189 . 16862) ( -EF.BLANK 16864 . 22489) (COPYFONT 22491 . 24931) (READSTRIKEFONTFILE 24933 . 31905) ( -WRITESTRIKEFONTFILE 31907 . 36278)) (36281 38495 (BLANKFONTCREATE 36291 . 36548) (EDITFONT 36550 . -38493))))) + (FILEMAP (NIL (1567 26117 (EF.INIT 1577 . 2303) (EF.PROMPT 2305 . 2887) (EF.MESSAGE 2889 . 3101) ( +EF.CLOSEFN 3103 . 3630) (EF.CHARITEMS 3632 . 5853) (EF.BUTTONEVENTFN 5855 . 6267) (EF.WHENSELECTEDFN +6269 . 6673) (EF.EDITBM 6675 . 8073) (EF.MIDDLEBUTTONFN 8075 . 8320) (EF.CHANGESIZE 8322 . 9541) ( +EF.DELETE 9543 . 10308) (EF.ENTER 10310 . 11141) (EF.REPLACE 11143 . 12006) (EF.SAVE 12008 . 16681) ( +EF.BLANK 16683 . 22308) (COPYFONT 22310 . 24750) (READSTRIKEFONTFILE 24752 . 26115)) (26118 28332 ( +BLANKFONTCREATE 26128 . 26385) (EDITFONT 26387 . 28330))))) STOP diff --git a/lispusers/EDITFONT.LCOM b/lispusers/EDITFONT.LCOM index bc1159351b43f658d2bfe2e433c28b56b024d931..5ed21335cba515f194d1ec0ffdac87434adc1a2e 100644 GIT binary patch delta 731 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.5>working-medley>sources>FONT.;2 188234 +(FILECREATED "12-Jul-2022 15:09:31" {DSK}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}kaplan>Local>medley3.5>working-medley>sources>FONT.;1) + :PREVIOUS-DATE "11-Jul-2022 23:05:20" +{DSK}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 diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index 1ae613b2acd18879115c39435f2838f3662e830c..231990dab25c0489c2d4517f1dc76248ed3d0e61 100644 GIT binary patch delta 3002 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