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

13 Commits

Author SHA1 Message Date
rmkaplan
82fc95ce18
rmk122--Next round on fonts and MCCS (#2280)
* A revision to the font, Unicode, Tedit, and other modules to implement the MCCS character coding as the standard for internal text strings.  MCCS is a variant of XCCS with arrows switched with circumflex/underscore and $ switched with currency, and allows for additional code assignments over time. :MCCS replaces :XCCS as the default external format, especially for source files.  The file XCCS is removed in favor of the file MCCS, which includes the XCCS external format for backward compatibility.

* This includes a single Medley-font formatted font file for each of the family/size/face display fonts.  The glyph assignments correspond to the MCCS character encoding (except for fonts with idiosyncratic encodings--Hippo, Symbol).  All charsets from legacy font files are included in each file, and the character sets and glyphs in each file have also been extended by offline coercion from related families (e.g. Glyphs not in legacy Terminal are taken from legacy Modern). There should be fewer black boxes, and character-display shouldn't change when you switch fonts.

* The Unicode mapping tables have been redefined to set up correspondences between Unicode and MCCS, not XCCS.  Separate XCCS to/from MCCS mapping functions are provided in the file MCCS; they are no longer included in INTERPRESS.

* TEDIT converts characters in legacy fonts to their new MCCS codes as it reads formatted files, marks the file as MCCS compatible and preserves the new codes on writing.

* Default keyboard assignments produce the MCCS uparrow and leftarrow for shift-6 and shift-hyphen, use Function-6 for circumflex and Function-10 for underscore.

See documentation in FONTCODECHANGES.TEDIT MCCS.TEDIT MEDLEYFONTFORMAT.TEDIT in docs/internal, and library/UNICODE.TEDIT.
2025-10-20 17:17:34 -07:00
rmkaplan
f6eb5d9846
Fixex to \FORMATBYTESTRING and \FORMATBYTESTREAM (#1618)
Motivated by the fact that FILEPOS was not being properly informed that the bytes of the encoded stream are stable (unlike XCCS) so it can run at the byte level without character decoding.
2024-04-01 20:21:38 -07:00
rmkaplan
934d0fb7a4
Move charset management to externalformat (addresses #1454) (#1455)
* Move charset management to externalformat (addresses #1454)

Removed IMCHARSET from IMAGEOPS declaration, added FORMATCHARSETFN to EXTERNALFORMAT, put XCCS charset handling in the XCCS externalformat.

* XCCS, fixed a glitch

* UNICODE: Remove merge conflict

* Fix typo CLFUNCALL, MAKEFILE NEW and BCOMPL (versions didn't match)

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2024-01-12 11:42:22 -08:00
rmkaplan
b1294ea5e9
Rmk94 fix checkeolc macro (#1435)
* EXTERNALFORMAT: \CHECKECOLC macro confusedf ANY vs CR EOL convention

* Recompile callers of \CHECKEOLC macro

* If ANY and no CR after LF, return EOL instead of CR
2023-12-09 22:50:39 -08:00
Larry Masinter
3f244f6cd3
Change SYSTEM-EXTERNALFORMAT to more accurately guess the external format (#987) 2022-10-10 22:29:21 -07:00
rmkaplan
92f85c5957
Rmk64: mainly separate panels for GITFNS display, FILEPOS speed up (#862)
* HRULE:  Add a PREPRINTFN for horizontal rules

Looks better in plaintext files

* GITFNS, COMPAREDIRECTORIES:  Group earler/later in separate segments

GIT-CDBROWSER-SEPARATE-DIRECTIONS defaults to T

* FILEIO: INITVARS rather than VARS for FILING.TYPES

To avoid contamination with values from other files (like LAFITE)

* FILEPKG: SEPRCASE in EDITCALLERS includes comma and quote even if no DWIMIFYCOMPLFG

Also seprate the caseinsensitive UPPERCASEARRAY from the SEPRCASE array

* IOCHAR: Open code the call to \INCCODE.EOLC

About a 30% speed up in the slow (casearray/skip) case.  Eventually macros should be defined for the externalformat interface functions, for now it is nice to be able to trace/break them.

* EXTERNALFORMAT: a little bit of cleanup

particularly around EOLC
2022-07-25 19:12:52 -07:00
rmkaplan
6376579b1c
Rmk63 backccode peekccode eolc (#853)
* EXTERNALFORMAT,UNICODE,XCCS: Consistent naming of \PEEKCCODE(.EOL), \BACKCCODE returns the code

It was confusing that the naming of the peek functions was inconsistent with the inccode and backccode functions with respect to the EOLC qualifier.  Now uniformaly, the unqualified names (\PEEKCCODE, \BACKCCODE, \INCCODE) do not do any EOL interpretation.  The qualified-name functions (\PEEKCCODE.EOLC, \INCCODE.EOLC, \BACKCCODE.EOLC) do EOL interpretation.

Also, the \BACKCCODE interface is changed so that it returns the code corresponding to the bytes that it passed over.  This simplifies some of the callers.

* Clients of \PEEKCCODE \BACKCCODE and .EOL

Small changes either to fix inconsistencies (backing, reading, peeking with inconsistent EOL interpretation), updating the names in a few other cases, a few simplifications.

* glitches in ATERM, HARDCOPY updates
2022-07-21 10:36:19 -07:00
rmkaplan
4238dc3888
Rmk56 filepos with external formats #3 (#827)
* TESTUPF:  Move from internal/ to internal/test/unpackfilename

to be parallel with filepos

* IOCHAR:  FILEPOS respects external format (#3)

* FILEPKG: EDITCALLERS speed up with new FILEPOS

* internal/test/filepos:  Testing jig and cases for new FILEPOS

* EXTERNALFORMAT, IOCHAR: fix external-format glitches
2022-07-16 21:30:54 -07:00
rmkaplan
c93e620624
Rmk53 added system externalformat (#823)
* CLSTREAMS: Fix EOL/external format on error stream (synonym and 2-way) #815

* CMLFORMAT: makefile NEW to get functions in filemap

* CLSTREAMS: cleanup formats for more types

* FILEIO:  Add readonly bit in streams for external-format

* UNIXCOMM, EXTERNALFORMAT: Introduce STREAM-EXTERNALFORMAT
2022-07-09 17:12:27 -07:00
rmkaplan
d7ca40ebeb
Rmk51 end game of external format integration (#814)
* Compile device-creation functions for new default interface

* UNICODE:  minor bug

* LLINTERP: MOVD? APPLY* to SPREADAPPLY*

* External format interface: a few more adjustments

* CLSTREAMS: Recompile, no source change

* PRETTYFILEINDEX: suppress when printing gitmaps to a non-display stream

* UNIXCOMM: Default format comes from device

Also, I seemed to have reverted back to LCOM with FAKE-COMPILE-FILE
2022-07-03 18:49:04 -07:00
rmkaplan
648335bfec
Rmk49: responds to #800 (#803)
* TEDIT, TEXTOFD:  Pass FORMAT in PROPS to OPENSTREAM

In TEDIT and OPENTEXTSTREAM.  I don't think TEDIT interprets the external format, but at least the info is there

* WINDOW: CREATEW prompts on one line

It was calling PROMPTPRINT twice, which resulted in orphan-looking lines

* EXAMINEDEFS: Propagate textwidth to COMPARETEXT

* COMPARETEXT: propagate height/width of text windows, for linelength

#800

* GREP:  Will work with external formats, after FILEPOS update

Line printout could be better, if e.g. it is a Lisp source file, but...

* EXAMINEDEFS:  Propagate window width to COMPARETEXT, for LINELENGTH

* GITFNS: added fetch before git log

* PSEUDOHOSTS: Pseudohost-streams are now registered on the PH device, not the target device

* EXTERNALFORMAT, XCCS:  Globalvar declaration in wrong place

Also updated \CHECKEOLC macro

* GITFNS:  moved git fetch to beginning of prc

* GREP:  Propagated OUTSTREAM
2022-06-26 18:18:44 -07:00
rmkaplan
217938c104 EXTERNALFORMAT: Add \FORMATBYTESTRING, EOLC arg to \INCCODE.EOLC
Also, STREAM can be given as the format argument to \EXTERNALFORMAT, gets the stream's format.

Atoms (LF, CR, CRLF, ANY) allowed for EOL specs (caller won't need exports.all)
2022-06-22 16:28:03 -07:00
rmkaplan
db3ca49564 Localize external format implementation in new EXTERNALFORMAT file
Pieces moved from FILEIO and LLREAD, EXTERNALFORMAT added to FILESETS
2021-09-25 22:48:04 -07:00