From c52a4005dee0e4c71074f99b2346d7488c4501d8 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Mon, 6 Oct 2025 21:01:24 -0700 Subject: [PATCH] Palatino translation table and function --- sources/MCCS | 228 +++++++++++++++++++++++++++++++++++----------- sources/MCCS.LCOM | Bin 21011 -> 23630 bytes 2 files changed, 176 insertions(+), 52 deletions(-) diff --git a/sources/MCCS b/sources/MCCS index d98baa4b..95997ff0 100644 --- a/sources/MCCS +++ b/sources/MCCS @@ -1,12 +1,14 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "20-Sep-2025 09:45:41" {WMEDLEY}MCCS.;138 51315 +(FILECREATED " 6-Oct-2025 16:44:20" {WMEDLEY}MCCS.;149 56371 :EDIT-BY rmk - :CHANGES-TO (FNS MCCSMAPPAIRS) + :CHANGES-TO (VARS PALATINOTOMCCS MCCSCOMS) + (FNS MCCSMAPPAIRS XCCS.CS0.UNDEFINED XCCSUNDEFINEDPAIRS XCCSUNDEFINEDCONTROLS + PALATINOTOMCODE MCCSMAPFN) - :PREVIOUS-DATE " 9-Sep-2025 22:45:13" {WMEDLEY}MCCS.;137) + :PREVIOUS-DATE "20-Sep-2025 09:45:41" {WMEDLEY}MCCS.;138) (PRETTYCOMPRINT MCCSCOMS) @@ -38,25 +40,26 @@ (FNS MTOXCODE XTOMCODE XTOMSTRING MTOXSTRING) (FNS MTOX$CODE X$TOMCODE) (FNS KANJICHARSETP CHINESECHARSETP) - (COMS (* ; " Mapping functions to MCCS") - - (* ;; "Used by \TEDIT.MCCS.TRANSLATE .") - - (VARS ALTOTEXT2MCCS SYMBOLTOMCCS SIGMATOMCCS HIPPOTOMCCS CYRILLICTOMCCS MATHTOMCCS) + (COMS (* ; " Mapping to MCCS") + (VARS ALTOTEXT2MCCS SYMBOLTOMCCS SIGMATOMCCS HIPPOTOMCCS CYRILLICTOMCCS MATHTOMCCS + PALATINOTOMCCS) (FNS MCCSCODEMAPARRAY) (GLOBALVARS ALTOTOMCCSARRAY SYMBOLTOMCCSARRAY HIPPOTOMCCSARRAY CYRILLICTOMCCSARRAY - MATHTOMCCSARRAY SIGMATOMCCSARRAY) + MATHTOMCCSARRAY SIGMATOMCCSARRAY PALATINOTOMCCSARRAY) (INITVARS (ALTOTOMCCSARRAY (MCCSCODEMAPARRAY 'MCCS)) (SYMBOLTOMCCSARRAY (MCCSCODEMAPARRAY SYMBOLTOMCCS)) (HIPPOTOMCCSARRAY (MCCSCODEMAPARRAY HIPPOTOMCCS)) (CYRILLICTOMCCSARRAY (MCCSCODEMAPARRAY CYRILLICTOMCCS)) (MATHTOMCCSARRAY (MCCSCODEMAPARRAY MATHTOMCCS)) - (SIGMATOMCCSARRAY (MCCSCODEMAPARRAY SIGMATOMCCS))) - (FNS MCCSMAPFN MCCSMAPPAIRS XCCSUNDEFINEDPAIRS) - (COMS (* ; - "Mappings into MCCS: needed for hardcopy and Tedit coercion") + (SIGMATOMCCSARRAY (MCCSCODEMAPARRAY SIGMATOMCCS)) + (PALATINOTOMCCSARRAY (MCCSCODEMAPARRAY PALATINOTOMCCS))) + (FNS MCCSMAPFN MCCSMAPPAIRS XCCS.CS0.UNDEFINED XCCSUNDEFINEDPAIRS) + (COMS + (* ;; + "Mappings into MCCS: needed for hardcopy and Tedit coercion, e.g. \TEDIT.MCCS.TRANSLATE") + (FNS GACHATOMCODE SYMBOLTOMCODE SIGMATOMCODE ATOMCODE MATHTOMCODE HIPPOTOMCODE - CYRILLICTOMCODE]) + CYRILLICTOMCODE PALATINOTOMCODE]) @@ -458,12 +461,7 @@ -(* ; " Mapping functions to MCCS") - - - - -(* ;; "Used by \TEDIT.MCCS.TRANSLATE .") +(* ; " Mapping to MCCS") (RPAQQ ALTOTEXT2MCCS @@ -1158,6 +1156,95 @@ ("0,375" Null) ("0,376" Null) ("0,377" Null))) + +(RPAQQ PALATINOTOMCCS + (("0,32" "361,353") + ("0,34" "361,260") + ("0,35" "361,277") + ("0,36" "361,304") + ("0,37" "361,153") + ("0,136" "0,255") + ("0,137" "0,254") + (NIL "0,240") + ("0,200" "361,047") + ("0,201" "361,124") + ("0,202" "361,043") + ("0,203" "361,077") + ("0,204" "361,114") + ("0,205" "361,120") + ("0,206" "361,121") + ("0,207" "361,117") + ("0,210" "361,122") + ("0,211" "361,134") + ("0,212" "361,140") + ("0,213" "361,141") + ("0,214" "361,145") + ("0,215" "361,137") + ("0,216" "361,155") + ("0,217" "361,160") + ("0,220" "361,142") + ("0,221" "361,241") + ("0,222" "361,243") + ("0,223" "361,276") + ("0,224" "361,250") + ("0,225" "361,320") + ("0,226" "361,321") + ("0,227" "361,322") + ("0,230" "361,322") + ("0,231" "361,334") + ("0,232" "361,244") + ("0,233" "361,341") + ("0,234" "361,261") + ("0,235" "361,337") + ("0,236" "361,262") + ("0,237" "361,255") + ("0,240" "361,247") + ("0,244" "0,057") + (* ; "Slash, but should be fraction") + ("0,246" "357,243") + ("0,250" "0,244") + ("0,254" "357,052") + ("0,255" "357,053") + ("0,256" "360,004") + ("0,257" "360,005") + ("0,261" EMDASH) + ("0,262" "357,060") + ("0,263" "357,061") + ("0,267" "357,146") + ("0,270" "43,262") + ("0,271" "357,050") + ("0,274" "41,104") + ("0,275" "357,101") + ("0,311" "357,153") + ("0,314" "361,314") + ("0,321" "375,261") + ("0,324" "361,324") + ("0,325" "375,362") + ("0,326" "375,363") + ("0,327" "0,274") + ("0,330" "0,275") + ("0,331" "0,264") + ("0,332" "0,270") + ("0,333" "357,152") + ("0,334" "361,265") + ("0,335" "0,261") + ("0,336" "361,042") + ("0,337" "357,044") + ("0,340" "361,340") + ("0,344" "361,041") + ("0,345" "361,345") + ("0,346" "361,050") + ("0,347" "361,044") + ("0,355" "361,355") + ("0,356" "361,055") + ("0,357" "361,061") + ("0,360" "361,360") + ("0,362" "361,062") + ("0,364" "361,065") + ("0,366" "361,060") + ("0,367" "361,277") + ("0,375" "361,100") + ("0,376" "361,104"))) (DEFINEQ (MCCSCODEMAPARRAY @@ -1192,7 +1279,7 @@ (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS ALTOTOMCCSARRAY SYMBOLTOMCCSARRAY HIPPOTOMCCSARRAY CYRILLICTOMCCSARRAY MATHTOMCCSARRAY - SIGMATOMCCSARRAY) + SIGMATOMCCSARRAY PALATINOTOMCCSARRAY) ) (RPAQ? ALTOTOMCCSARRAY (MCCSCODEMAPARRAY 'MCCS)) @@ -1206,10 +1293,13 @@ (RPAQ? MATHTOMCCSARRAY (MCCSCODEMAPARRAY MATHTOMCCS)) (RPAQ? SIGMATOMCCSARRAY (MCCSCODEMAPARRAY SIGMATOMCCS)) + +(RPAQ? PALATINOTOMCCSARRAY (MCCSCODEMAPARRAY PALATINOTOMCCS)) (DEFINEQ (MCCSMAPFN - [LAMBDA (FROMENCODING) (* ; "Edited 6-Sep-2025 12:40 by rmk") + [LAMBDA (FROMENCODING) (* ; "Edited 5-Oct-2025 19:56 by rmk") + (* ; "Edited 6-Sep-2025 12:40 by rmk") (* ; "Edited 4-Sep-2025 08:06 by rmk") (* ; "Edited 24-May-2025 10:55 by rmk") @@ -1234,11 +1324,13 @@ (CYRILLIC (FUNCTION CYRILLICTOMCODE)) (XCCS (FUNCTION XTOMCODE)) (GACHA (FUNCTION GACHATOMCODE)) + (PALATINO (FUNCTION PALATINOTOMCODE)) (MCCS NIL) NIL]) (MCCSMAPPAIRS - [LAMBDA (FROMENCODING NONIDENTITY) (* ; "Edited 20-Sep-2025 09:45 by rmk") + [LAMBDA (FROMENCODING NONIDENTITY) (* ; "Edited 6-Oct-2025 09:47 by rmk") + (* ; "Edited 20-Sep-2025 09:45 by rmk") (* ; "Edited 6-Sep-2025 16:43 by rmk") (* ; "Edited 31-Aug-2025 16:16 by rmk") @@ -1259,37 +1351,56 @@ (Leftarrow Lowline) (Lowline Leftarrow) (Circumflex Uparrow))) + (PALATINO (APPEND (XCCS.CS0.UNDEFINED) + PALATINOTOMCCS)) (for C M from 0 to \MAXTHINCHAR when (SETQ M (APPLY* FN C NONIDENTITY)) collect (LIST C M] - (* ;; "Weed out interspersed comments") + (* ;; "Weed out interspersed comments, convert to charcodes") - [for P in PAIRS when (LISTP P) unless (EQ '* (CAR P)) - collect (LIST (if (LISTP (CAR P)) - then - (* ;; + [SETQ PAIRS (for P in PAIRS when (LISTP P) unless (EQ '* (CAR P)) + collect (LIST (if (LISTP (CAR P)) + then + (* ;;  "Allows for the (Uparrow TERMINAL) case above, for MOVEFONTCHARS") - (CONS (CL:IF (CHARCODEP (CAAR P)) - (CAAR P) - (CHARCODE.DECODE (CAAR P))) - (CDAR P)) - elseif (CHARCODEP (CAR P)) - then (CAR P) - else (CHARCODE.DECODE (CAR P))) - (CL:IF (CHARCODEP (CADR P)) - (CADR P) - (CHARCODE.DECODE (CADR P)))])]) + (CONS (CL:IF (CHARCODEP (CAAR P)) + (CAAR P) + (CHARCODE.DECODE (CAAR P))) + (CDAR P)) + elseif (CHARCODEP (CAR P)) + then (CAR P) + else (CHARCODE.DECODE (CAR P))) + (CL:IF (CHARCODEP (CADR P)) + (CADR P) + (CHARCODE.DECODE (CADR P)))] + + (* ;; + "Any character that is moved gets replaced by a slug. It may then be coerced from another font.") + + [APPEND PAIRS (for P in PAIRS when (CAR P) collect (LIST NIL (CAR P])]) + +(XCCS.CS0.UNDEFINED + [LAMBDA NIL (* ; "Edited 5-Oct-2025 22:44 by rmk") + + (* ;; "Maps slugs to all undefined/reserved characters in XCCS") + + (APPEND (for I from 0 to (SUB1 (CHARCODE SPACE)) collect (LIST NIL I)) + (for I from (CHARCODE "0,#NULL") to (SUB1 (CHARCODE "0,#SPACE")) + collect (LIST NIL I)) + (for I in (CHARCODE ("0,177" "0,246" "0,250" "0,300" "0,351" "0,326" "0,327" "0,330" + "0,331" "0,332" "0,333" "0,377")) collect (LIST NIL I]) (XCCSUNDEFINEDPAIRS - [LAMBDA NIL (* ; "Edited 2-Sep-2025 13:14 by rmk") - (APPEND (for I from 0 to (SUB1 (CHARCODE SPACE)) collect (LIST NIL I)) - (for I from 127 to \MAXTHINCHAR collect (LIST NIL I]) + [LAMBDA NIL (* ; "Edited 5-Oct-2025 22:39 by rmk") + (* ; "Edited 2-Sep-2025 13:14 by rmk") + (APPEND (XCCS.CS0.UNDEFINED) + (for I from 128 to \MAXTHINCHAR collect (LIST NIL I]) ) -(* ; "Mappings into MCCS: needed for hardcopy and Tedit coercion") +(* ;; "Mappings into MCCS: needed for hardcopy and Tedit coercion, e.g. \TEDIT.MCCS.TRANSLATE") (DEFINEQ @@ -1365,16 +1476,29 @@ (CL:UNLESS (EQ MCODE CCODE) MCODE))) CCODE]) + +(PALATINOTOMCODE + [LAMBDA (PCODE) (* ; "Edited 5-Oct-2025 20:08 by rmk") + (* ; "Edited 7-Sep-2025 22:39 by rmk") + (* ; "Edited 3-Sep-2025 10:21 by rmk") + (* ; "Edited 7-Aug-2025 09:37 by rmk") + (* ; "Edited 1-Jun-2025 07:02 by rmk") + (OR (CL:WHEN (ILEQ PCODE \MAXTHINCHAR) + (LET ((MCODE (ELT PALATINOTOMCCSARRAY PCODE))) + (CL:UNLESS (EQ MCODE PCODE) + MCODE))) + PCODE]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2791 14362 (\MCCSINCCODE 2801 . 5889) (\MCCSPEEKCCODE 5891 . 8778) (\MCCSOUTCHAR 8780 - . 10879) (\MCCSBACKCCODE 10881 . 12425) (\MCCSFORMATBYTESTREAM 12427 . 13157) (\MCCSCHARSETFN 13159 - . 14360)) (14363 15245 (\CREATE.MCCS.EXTERNALFORMAT 14373 . 15243)) (15246 16223 ( -\MCCS.24BITENCODING.ERROR 15256 . 16221)) (17599 20237 (MTOXCODE 17609 . 18406) (XTOMCODE 18408 . -19065) (XTOMSTRING 19067 . 19652) (MTOXSTRING 19654 . 20235)) (20238 21898 (MTOX$CODE 20248 . 20980) ( -X$TOMCODE 20982 . 21896)) (21899 22539 (KANJICHARSETP 21909 . 22165) (CHINESECHARSETP 22167 . 22537)) -(40660 42534 (MCCSCODEMAPARRAY 40670 . 42532)) (43063 47227 (MCCSMAPFN 43073 . 44285) (MCCSMAPPAIRS -44287 . 46919) (XCCSUNDEFINEDPAIRS 46921 . 47225)) (47303 51292 (GACHATOMCODE 47313 . 47825) ( -SYMBOLTOMCODE 47827 . 48475) (SIGMATOMCODE 48477 . 49123) (ATOMCODE 49125 . 49657) (MATHTOMCODE 49659 - . 50315) (HIPPOTOMCODE 50317 . 50854) (CYRILLICTOMCODE 50856 . 51290))))) + (FILEMAP (NIL (3015 14586 (\MCCSINCCODE 3025 . 6113) (\MCCSPEEKCCODE 6115 . 9002) (\MCCSOUTCHAR 9004 + . 11103) (\MCCSBACKCCODE 11105 . 12649) (\MCCSFORMATBYTESTREAM 12651 . 13381) (\MCCSCHARSETFN 13383 + . 14584)) (14587 15469 (\CREATE.MCCS.EXTERNALFORMAT 14597 . 15467)) (15470 16447 ( +\MCCS.24BITENCODING.ERROR 15480 . 16445)) (17823 20461 (MTOXCODE 17833 . 18630) (XTOMCODE 18632 . +19289) (XTOMSTRING 19291 . 19876) (MTOXSTRING 19878 . 20459)) (20462 22122 (MTOX$CODE 20472 . 21204) ( +X$TOMCODE 21206 . 22120)) (22123 22763 (KANJICHARSETP 22133 . 22389) (CHINESECHARSETP 22391 . 22761)) +(43331 45205 (MCCSCODEMAPARRAY 43341 . 45203)) (45821 51491 (MCCSMAPFN 45831 . 47198) (MCCSMAPPAIRS +47200 . 50497) (XCCS.CS0.UNDEFINED 50499 . 51128) (XCCSUNDEFINEDPAIRS 51130 . 51489)) (51596 56348 ( +GACHATOMCODE 51606 . 52118) (SYMBOLTOMCODE 52120 . 52768) (SIGMATOMCODE 52770 . 53416) (ATOMCODE 53418 + . 53950) (MATHTOMCODE 53952 . 54608) (HIPPOTOMCODE 54610 . 55147) (CYRILLICTOMCODE 55149 . 55583) ( +PALATINOTOMCODE 55585 . 56346))))) STOP diff --git a/sources/MCCS.LCOM b/sources/MCCS.LCOM index 3f8baaf22dd86356cf9935029abac8c64b54a329..7a88ef6c98153f64eadfe3a2e39192c44277a28c 100644 GIT binary patch delta 3363 zcmZuzO>7%Q6wW5}Z=p?`hS1thI&4d@)70$D?2nT|>5@2&6DRA$=}%~-&^D!RYZ^gQ zaX_%ZffGWML7Y&zAaO%!(+JeRAR*v}REZ1X&;vJw1hfZ^<;~2_Y-kh7vFG`{dEfiq z_uiU)Y5e@H@$umf^ymX zexZKm{AqONJhFxlRw`(Xx^L>>)Pr%H#);lbLTAt-=t zGw9NH#t)l~o9u(uuh^~D4o2Iy=ZaXML)dp8xea?oZCk3f9X0kAQBau<~DHLcIpk46lOR!7OF;GZpVu&DY+sUDyuB8~yNjzMCEde<=@t_#7Gh3hbiA_;2 zDtfwu$j2gf7XnSIP9s9lfdKHrKp?+}a%{%yWp}ss8Xhw{+~^_k4h$8|Toqwd&ZDNc z)y9L<;|6P`snrYxnE`$?^Jqj zEdKkb{U>3cGj7$#A?A8Cw!C4qo<8>8XwQx2mgPSxviDK|O*u?fk%zIXS;(6c=h4QMG!O*9U|C41pEp1;N`=s2(NzVuba=C$%wL2N9Pf;4(b$gZ9LHRnWM1` zAFbhcQ3J?{YCOnUqp?f3JHBtuJUr!s;tI;ysLED4U)ZR=UwZwi*IK$4=EX!?ux!LK zQhk&Y%k0cPGg%z0p4rVl%@D(6KW3iUUMn9M59AyNQ&Yi=RtEbglVjPgt!#I8C;Ky- zVy|QoTh4YcmbKX1lRH~b&Sbx31NPVCj>qA%g2e7-yEQ)MboI9WUoIw_>Ds~G?Ao`! z51lHUE_{;d+{BUdHEFV2T^aUk*FG~@s7r0#Uz2E3x?=>2(n&bP zh_{vyg^?tgp#qtiBrFoeBJn+y8F-KVTum4Ogt8Qxut*d{3h83lBvKe@!WdO7uC^(J zG+~j8RAwQLrj{y*G%013baiGbNqi0@p0FrX$<;(W-9IkNI15nAQdUP4gNLMCqP8o# z(2MpWtJXMvq27m1TwFjG>hl*HbLhk=^y(YOPcEF9Kd*{*q?}y8Zxyvbp47Xp1m*yU z1uvWbf|6na1jve{QES_k!~zmIbG)N~NucINEgTO>ER7EZwUPKbs4`BGD8v&4^0eTt z{6v?)h5>s%l308pC5Nsi%NK1Dn6(&uUWWq{nxOLq`TRZ@V3~u;IpH?FB`8;atRp?4 zltdzl??Pf7tyM_%9-v%>76m`5yGf-8g-!8CiQo!I1Eet+Awh0Y+)>Jtg2i*Jxc^iv zN$#XdrBZyN2GugI*LXfWxXhHhRH%>NrVG&0vz;VV(Qa#fQ`i@gypMm3;R+>k-P%(0 zV(Y@fP>#9^E=oByamcn z*9TlGo6h2Cgfdnn@l+DRxA(J>Ln$J@`r*kC69H>U-pIwav|N4JXw6MkgUJ{5Q;t7H OpHz?3_-D5K{qi6ALf~rv delta 982 zcmZuwO-~b16lDs6PAIhHBU+%nj6m8F#?G4#g%Z)Bozj76r*_I`K}3r3(Etg!Feb7z zE=VLVZd~BTgqRT1q>vaP5@TE$jSF<^4{&2-!NLT5Q>1`6o11&yopbLy_q@-qDg1(Z z(pQe$P1^We6LKQ~+^s&3;Pas6=|(Hx;sl!c=hV&l1a3K984LUUT3C!mMLDLyCNjrkFBKc#I7?%QgpW+Ka;CN2J3RUF|Ml_&LwsC?l z8k2fuwMT0TkUxNd*5lC;(nsg`T4P#`&I=t0Ay^~0P z!CcwH#an7+!$^7hSDpj$2>c;2=2rs}8<6w>i1X&KC=s_MmmO7btwIiq0@reugCkcz z;*CPH8-~c%q(}gPz(Z|6xqnY2AO+=!6gXTa?>#O-Uc6S$G;#t07Z4)7ybe4lQ3wxK2>4ND^;qm2(J5u0GNS@Hw7Y(>%aS@sE&k1zE=yKb zlS~xa>fSIa6V}8Vd3t9c{Z(n$Oz)k=KW6bf2hZgO&HS!>Z^*FL;r!U0doyDTle07P zurQn5IpYL}3)6s^9ynP>rh}+~itM8tT$Ha)H=x$>5!d{Ws`II|=#xHBy@m@_m zMdNB4!m6#lkk;hRu!xsz4*Y2l@HblpIs9Sc@U;ZstM&?9Z7;`52~#0B!eTsx-woRE zGrJvc*vjyJ!idelTskc~>Frm;nm#HXh4wmq82trg#f_`stRJ+2aED5)dzjJqJG5um Q+EtX<9K1mlL}Z2j1F|3v_W%F@