%%%%% CaesarCM.doc, April 1992; version2, Sept 1992, Jan 1993 === CAESAR-CM === **** A SMART HYPHENATION AND ACCENTUATION MACRO PACKAGE **** --- documentation --- Laurent Siebenmann The name Caesar originated as the "non de guerre" of the Roman conqueror of Gaul. It is often repeated that "he was untimely ripped from his mother's womb". Our use (like the Romans') is explained by the Latin verb caedere, to cut, (past participle caesum), and the nouns caesura, the cut, and decisio, juridic decision. The present use of the name Caesar comes more immediately via the French c\'esure, meaning a pause within a verse following an accented sylable, or (more recently) hyphenation. The CaesarCM package was built to provide a flexible transitional solution to the problem of providing good hyphenation for French and (US) English under TeX implementations that for one reason or another are equipped with Computer Modern (CM) fonts rather than with fonts based on the conflicting (but improved) TeX norm of Cork 1990. Flexible is the keyword --- the hyphenation will be perfect for those fonts you have space to install in a suitably extended form, and it will never be worse than the respectable hyphenation that the HyAcc-CM package provides for standard CM fonts. It will probably remain in use until all TeX installations have compact virtual fonts in use which follow the Cork norm AND provide emulation of the original CM norm. Although it was built with French users in mind, this package is not really specific to any particular language. Admittedly, users of some nationalities may not yet find all the features they want. (Germans will however find that ^^bd can serve as compound word mark in the TM fonts specially prepared for CaesarCM.) Hyphenation patterns for many European languages are posted on ftp rusinfo.rus.uni-stuttgart.de [129.69.1.12] This package may be already out of date for PC microcomputers thanks to the great strides toward optimal implementation of the Cork norm using virtual fonts by the TeX implementations of Brouard-Sullivan and more recently Eberhard Mattes. MLTeX, an extension of TeX by M. Ferguson, has always offered excellent hyphenation. In contrast, no firm schedule is known for the implementation of virtual fonts nor any form of MLTeX with a standard Macintosh interface (eg under OzTeX and Textures). This statement has to be clarified: for the unix-like Macintosh Programmer Workshop environment there is since early 1992 a TeX environment called DirectTeX by Wilfried Ricken which has rudimentary virtual font support. (Available by anonymous ftp from ftp rusinfo.rus.uni-stuttgart.de [129.69.1.12].) The major new feature of this macro package is flexible use of a number of (possibly partially) extended Computer Modern fonts, to obtain improved or optimal hyphenation for words typeset in these fonts. The prime goals here are to save disk space and maintain 100% compatibility with current TeX documentation and with archives of .tex files. For fonts that are not extended at all, one gets, by default, an intermediate form of hyphenation due to Jacques Desarmenien; it is known through his French-English Plain format called feplain.fmt, and it gives good results except near accents. This intermediate form of hyphenation has been recently updated for international use by D. Flipo and the author. If your environment is "CM" but you do not have any extended CM fonts and are not in a position to install any, then you should use the smaller package. (I have travelers and American institutional users in mind here.) It is called HyAcc-CM.tex and is available along with this package on ftp rsovax.ups.circe.fr [130.84.128.100]. As a core sample to start from and build on, you will find with this package extended versions of the most commonly used prose fonts, cmr10, cmtt, and cmti10. They are provided in generic TeX format, and with some additional variants to serve the Macintosh TeX implementations Textures and OzTeX. These extensions come from a full collection "TM" of such extensions to the ISOLatin/1 half 192-255 of the Cork accented letter range 128-255 that was provided in February 1992 by D. Taupin on ftp rsovax.ups.circe.fr [130.84.128.100] (login: anonymous). This package is also available there. Beware however that all .tfm files used for extended CM fonts to be used (to advantage) by CaesarCM must be suitably marked either internally or by name. An appendix describes just how. The net disk-space cost of the quite ample "TM" extension of (for example) cmr10 is is under 40K octets with all magsteps present in .pk format. In contrast, the full .pk version dmr10 for the Cork norm would amount to about 160K, of which half might be saved by jettisoning the CM norm version. But more importantly, without the flexibility this package offers, it would be necessary to upgrade all prose fonts at once at a cost of several megaoctets. Daniel Taupin's aim in posting the "TM" fonts was to provide a straightforward continuation of the CM regime that taps the hyphenation powers of TeX available since fall 1989. This package arose as a result of my efforts to make efficient use of his fonts. His original recommendations required all fonts to be loaded under their "TM" names, and it imposed a trivial, but not completely hassle-free, revision of all formats and styles. In contrast I recommend that "TM" fonts be installed under "CM" names, because it obviates revision of preexisting format files; you just have to recompile as indicated below. The abstract notion of a partial extension of CM fonts, on which this CaesarCM package is based, is made precise in the Appendix on EXTENDED CM FONTS. It would be fair to say the case of TM fonts is a preexisting ISO based standard that the architects of the Cork norm set out to enlarge and improve. Purists may be irritated by my continued use of the name "CM" for the extended fonts, rather than "TM", or "dm" an earlier term due to Brouard-Sullivan for this sort of extension (see their TeX package for PC ibid.). I disagree: 100% upward compatibility by simple extension of CM following an undisputed norm justifies maintaining the name "CM". The resulting simplicity would be reason enough to use the term "CM" even if it were "immoral". In a many-user environment those who are happy with the original "CM" environment need not be aware that anything has changed --- just as with MLTeX. The use of the designation Extended Computer Modern for fonts of the Cork norm is more deceptive since the Cork norm significantly disrupts the Computer modern. See a full description given below of more useful switches at the users disposal. It should be emphasized that the average user will never need or want to make any adjustments whatever. They are made available for programmers and typographers. Suppose that your TeX environment has space enough for the full collection of extended computer Modern fonts, say as distributed by D. Taupin on rsovax.circe.fr. Is there advantage to be derived from the use of this CaesarCM package? I suspect the answer will be yes for a very long time to come. Firstly, the Computer Modern style is just one style of many, and since even the Taupin fonts are not fully extended, it is eminently reasonable to allow for other fonts extended over a different subset of the Cork "semi-norm" 128-255. The fonts being produced by J. Zlatu\v ska give an example (see Cahiers GUTenberg 10--11, pages 57--68). It is worth emphasizing that the "smart accents mechanism" of CaesarCM allows this by operating on a fontclass-by-fontclass and character-by-character basis. Secondly, the world has quite a population of unextended CM fonts such as Concrete Computer Modern ("ccr"), Pandora, Lucida. CaesarCM gives perhaps the simplest way of using these along side of nontrivially extended fonts. For example, it might be reasonable to do the main text of a schoolbook in tenpoint "TM", and the exercises in ninepoint "ccr" plus Euler math fonts. As mounted by Textures on the Macintosh, the PostScript fonts are, in effect, exotically extended CM. (They have some miscellaneous chacacters >127 but not in normalized positions.) By default CaesarCM treats them as unextended CM fonts. Here is a helpful but incomplete description of how Knuth's accent syntax \', \`, \^, \" etc. acts after this package has been loaded. A more complete description is provided in appendix xxx. Consider \'e for example (in prose). The extension class of the current font \font is normally identified by a large negative value of the function \skewcharacter\font. Then the presence of a ready-made "e-acute" character for this class is tested at the location specified by norm --- by testing whether a macro labelled by the class and the position is defined. If a ready-made character is detected, it is used. In other cases the approach of HyAcc-CM is followed: Knuth's \accent macro is used to form a composite character, and the trick of Desarmenien is applied to allow hyphens in the same word but not too close to the accented character. For French, nearly all hyphenation breakpoints become available if just and are available in the extended CM font. Such a miserly extension of CM applied to all prose fonts and then further enhanced by generous extensions of the major prose fonts by the "TM" series might offer the most economical use of this package in a typical French microcomputer environment. To benefit from this package, accents must be produced via Knuth's accent syntax \', \`, \^, \" etc., but the use need not be direct. It is possible to type ready-made accented characters, provided these characters are made active (macro-like). For example definitions of the form \catcode`\=13 %% active category \def {\'e} will do the job. Most TeX sites offer a suitable file of such definitions. Avoid definitions of the form \edef {\string^^e9} or \def {\char"E9} as they will only work when the current font has an present in the slot "E9 provided by the Cork norm. This package wraps up all the considerable complexity of previous macros for accents and hyphenation, notably those coming from M. Ferguson's MLTeX. I have had to simplify and compact them to build something more flexible. This process naturally introduced some bugs. Some may remain, so please report untoward behavior promptly! I offer sincere thanks to several colleagues for various forms of assistance. I have already mentioned recent contributions of Daniel Taupin and Daniel Flipo that provided vital ingredients. Laziz Abdelouhab piloted Victor Ostromoukhov's Mac Metafont for me under MPW, and also the Blue Sky Research font tools. Barry Smith and Doug Henderson provided me with clues on fonts for Textures after generously allowing the posting of their font tools in July 1991. I hope others yet will go the final lap to install this mechanism for the multitude of users who lack familiarity with TeX fonts but need improved accents and hyphenation at very modest cost in disk space. A quick test of this package, is indicated in CaesarTeaser.doc. For permanent installation, instructions are given below. Most users making a permanent installation of CaesarCM will want to simultaneously install hyphenation patterns, and other facilities for peculiarities of the language(s) to be used. Such installations of several major formats are provided for French & English by fe-format-dumper-cm (same postings); it can hopefully serve as a model for dealing with other languages. -------------------------- COMMAND SUMMARY Most users should be happy with the default settings of CaesarCM. Thus the following commands are mostly for programmers; their description tells a lot about how CaesarCM works. --- \Caesar, \noCaesar : These turn on and off the basic smart accentuation mechanism of this package. A ready-formed character-with-accent is used whenever available for the current font class, and otherwise an accent is combined with an unaccented character. --- \ShowCaesar, \HideCaesar : Diagnostic commands to show on the TeX log when a character-with-accent is used via the "smart accents" mechanism, and when a font is identified for the first time as an extended CM prose font. --- \ShowCurrentFontClass Shows on the TeX log the font class Caesar has assigned to the current prose font for the purposes of accent formation. --- \skewchar=\CaesarClass manually reassigns the class of a like \tenrm to a class like CM or TM. Caesar usually does class assignment automatically on the basis of internal marking of the .tfm or the font name. This command lets Caesar exploit fonts with unmarked .tfm's having arbitrary name. --- \JDaccents \noJDaccents : These turn on and off a Jacques Desarmenien mechanism that allows hyphenation far from the accents in a word with composite accents. Roughly speaking a word-break is introduced between the accent and the underlying letter, but zero space is actually inserted and no line break is allowed there. --- \MLcodes, \noMLcodes : Let \ae, \Ae, \oe, \Oe, \o, \O, \i participate (respectively do not participate) in the hyphenationation process and in action of \uppercase, \lowercase. By default one has \Caesar, \JDaccents and \MLcodes. Provided no accents and no exotic characters occur in a given word, this still gives the same possible breakpoints as Knuth's standard Plain TeX 3.0. If for some reason you need its rather unpleasant behavior in the presence of accents, use the unpleasant command \noCaesar\noJDaccents\noMLcodes. --- \RawPSText, \CMText : Some implementations of TeX, for example OzTeX (but not Textures), offer no ready-made adaptation of Adobe PostScript fonts to the CM font encoding. Then a good many things have to be redefined when one passes from the default Computer Modern regime to the "raw PostScript" regime. This is the job of \RawPSText, and \CMText brings you back. Do not forget to load PostScript fonts (via \font) before trying to use them. Also, be alert for portability problems, inevitable when different standards clash. The raw Postscript font encoding includes no ready-made accented characters. --- \showhyphens{\myfont ...} : This is standard Plain TeX, but there is a new twist in its behavior. It serves to indicate the possible hyphenation points available in a piece of text .... What is new is a possible dependance on the (text) font \myfont you use --- and CaesarCM is responsible for that dependence. Beware that if you do not specify the font explicitly, Plain TeX uses \tenrm --- NOT the current font! Note also that the breakpoints shown may be unavailable because \lefthyphenmin and \righthyphenmin are greater than 1. The following commands are for combatting occasional bugs; see Caesar.bugs for details. --- \noDSaccents, (and \DSaccents to return) (DS meaning Double Strike) serves to combat low resolution printer smudging of composite accented characters. --- \ufcr or equivalently \UpdateFontClassRegister serves to restore an occasionally suppressed kerning before the first accented character after a font class change. ======================================== The following two Steps (A) and (B) make CaesarCM fully functional. (A) FONT AND METRIC UPDATING To derive any benefit whatever the novel feature of the CaesarCM mechanism, you will want to add some CM norm fonts that have been significantly extended to the range 128-255 in accordance with the Cork norm of 1990 (see possibilities above), and been suitably marked as extended. If such a font goes under a new name, say tmr10, you can install or remove it just like any other font, and then go straight on to step (B). For serious use, it is recommended that you install extended versions of your principal prose fonts, normally cmr10 and cmti10, and add more if the need arises. We consider the case of bitmapped fonts of the .pk norm. Each font comes in two parts: a .tfm file such as cmr10.tfm containing all the metric information TeX needs and a collection of .pk files, one for each magstep. Each .pk file contains the character bitmapped images for the printer. A copy of the extended version of each .pk file should replace the original; the name should be that of the original, say cmr10.pk300 not tmr.pk300. One does the same with the .tfm file. To create or obtain a suitable modified .tfm, see an Appendix. It is helpful for the user to be able to readily distinguish the extended CM fonts from the unextended ones. The devices for external identification vary. Size, date, and name are always helpful. For OzTeX and Textures on the Macintosh, identification by icons is provided (see Appendices). Once CaesarCM is loaded identification is easy. \ShowCurrentFontClass tells the class of the current prose font (the one identified by \font). For example (under plain) \it \ShowCurrentFontClass will tell you (on the log) the class of the font for italics. Fonts can be added just a few at a time, as needed to maintain good hyphenation. However, beware that if you extend a standard font that is used in your precompiled format, then the smart accents mechanism cannot use the new accented characters until your format is recompiled as in (B) below to absorb the new information in the corresponding .tfm. -------------------------- (B) COMPILATION OF CaesarCM COMMANDS IN A Plain FORMAT It is important to use version 3.xx of TeX, and a version 3.xx of plain.tex. The critical date is autumn 1989, and earlier material will be inadequate. Here are instructions for a generic TeX, with Plain Format and French language and just to be specific. More elaborate formats will be used in practice and are discussed below. fhyphen.cork is (or calls) a copy of the French hyphenation pattern file using the ISO Latin 1 (or Cork) standard for encoding accented characters. Place together in one directory: (i) a copy of fhyphen.cork renamed hyphen.tex (ii) a copy of plain.tex exactly as provided by D. Knuth (iii) a file x.tex whose contents is the single line: \input plain.tex \input CaesarCM.tex \dump Note that some systems (Mac, VMS, ...) identify upper and lower case letters, while others (unix, ...) distinguish them. Compile x.tex using INITEX or VIRTEX, i.e., the primitive form of your TeX made for format building. After launching this TeX, one responds to a prompt ** by typing **x It does not matter if minor fonts such as manfont are missing; just hit carriage return. In time you should be invited to name the resulting format. Choose a distinctive name; it is often useful to indicate the TeX implementation and/or configuration used, since a format will normally run only with its parent TeX binary. With this format you can run various hyphenation tests with various fonts and font configurations. Where French is concerned, the compilation of formats can be a more complicated matter. This is because it is vital to accompany French hyphenation by French spacing and punctuation through the use of active characters, and this still causes complications with many formats such as AmSTeX and LamsTeX. Thus, a special French(-English) format compilation mechanism has been provided. It is called fe-format-dumper (or fe-fmts for PC's) and is posted as a directory on on ftp rsovax.ups.circe.fr [130.84.128.100]. It is not part of CeasarCM which is to be kept basically language independant. Further, fe-format-dumper serves HyAcc-CM as well as CeasarCM. WHEN SHOULD YOU RECOMPILE? You should recompile your format, whenever you extend a font it uses. This is because the old .tfm file is already in the compiled format; thus to take account of the new .tfm you must recompile! It is true that this can be a pain if you are unprepared; fortunately there numerous exceptions to this rule. This need arises from a weakness of TeX: it cannot unload a font of a given name, and it will never load a .tfm of a given name xxx a second time (via a command of the form \font\ft=xxx). Instead it reuses the .tfm named xxx that it first loaded. On the other hand, if the fonts in question are defined for the first time in your style file (not your format), then there is no need to recompile your format. Many users have formats that are not to be recompiled, perhaps because the the ingredients are not readily available, perhaps because you dislike format compilation. In such a case, it may should be possible to place yourself in the above case mentioned where no recompilation is needed. Suppose for example one wants to further extend cmr10, say from a version including just French accents to one with all european accents. WITHOUT RECOMPILING ONE CAN INTRODUCE THE EXTENSION UNDER A FRESH NAME, say eumr10. To use this font instead of cmr10 it usually suffices to put \font\tenrm=eumr10 \rm in your style file. This should override \font\tenrm=cmr10 in your compiled format. This is quick and quite practical, but it is best to regard it as a temporary measure, which if pursued could lead to a bloated and anarchic font collection. -------------------------- Appendix EXTENDED CM FONTS By a CM extension class we will mean a subset E of the accented characters of the range 128--255 of the Cork norm. By a (partially) extended CM TeX font "belonging to" class E will be meant one extending the Computer Modern norm for alphabetical fonts in the range 0--127, and in agreement with the Cork norm for the subset E of the range 128--255. In practice it is reasonably clear what "extending the Computer Modern norm" means. It is perfectly clear when, in the range 0-127, your font coincides in all respects (including name) with one of Knuths CM fonts. But note that cmr, cmti, and cmtt differ slightly; for example cmti has a pound sign where cmr has a dollar. The Cork norm of 1990 eliminates such variations. The CM fonts of Knuth, the "TM" fonts of Taupin, and the virtual fonts of J. Zlatu\v ska are naturally of extended CM type. Unfortunately there exist incompatible extensions of "CM" fonts, notably the numerous adaptations of Adobe Postscript fonts used by Textures on the Macintosh. (Many other TeX's use raw PostScript encoding, which makes these fonts "non-CM" even in the range 0-127; Caesar does not deal with them at all.) Such noncompatible extensions can be regarded by CaesarCM as simply CM fonts (ie as extended CM fonts of class E where E is the empty set). The extra characters do no harm, but they cannot be exploited by the smart accents mechanism of CaesarCM. For an extended CM font to be useful to CaesarCM, an extension class E to which it belongs must somehow be made known to CaesarCM, which is then prepared to use the ready-made accented characters that belong to E. Remember then that an extended CM font of class E may have some (other) accented characters contradicting the Cork norm; CaesarCM just ignores the latter. Each new class must be made known to CaesarCM.tex by adding suitable data. Currently, just three classes are known to CaesarCM.tex, namely --- a class CM, the "trivial" class of Computer Modern for which E is empty, --- a class for TM fonts which (roughly) has E the set of accented characters in the segment 192-255 of the Cork norm. --- a class AD, the Adobe type one font distribution reencoded to extended CM, August 1992 with N. Jungers. Coincident with TM in Aug 1992, but hopefully to become somewhat larger. Other classes can be added with help from a TeX programmer. Since for each font, CaesarCM needs to have a specified and known extension class E, we have to provide means to specify it. 1) By default the assigned class will be empty, as for CM fonts, but this can be changed to TM (say) by the command \let\CaesarDefaultClass\CaesarClassTM. 2) The .tfm file may carry external or internal markings that cause CaesarCM.tex to conclude automatically that the font belongs to a certain class. See the following appendix for details. 3) The class can be (re)assigned by command at any time by \skewchar=\CaesarClass where the current possibilities for are CM and TM. For example with Plain TeX, \skewchar\tenrm=\CaesarClassTM assigns class TM to \tenrm. (Currently, \CaesarClassCM gives -10 and \CaesarClassTM gives -20 but these numerical values may be ephemeral.) Such an explicit assignment takes priority over an internal marking as in (2) above. There may be several font commands, say \tenrm and \myrm that refer to the same font cmr10; happily the above class change applies to all at once --- they are indeed the same font. Appendix MARKING EXTENDED CM FONTS CaesarCM uses the notion of a "marked and extended" CM (metric) font. The marking serves to automatically specify an extension class to which the font belongs. Note that the marking can always be replaced (or overruled) by an explicit class assignment as in (3) above. Marking is thus an optional extra convenience. *** External marking by name prefixes. CaesarCM automatically recognises the following two-letter ".tfm" file name prefixes: cm, CM, dm, DM, tm, TM If one of these prefixes occurs it tests whether (at Cork position "E9) has positive width. If so it assigns class TM. (A standard CM font of course fails this test.) This is a test of last resort that applies only if other tests would say nothing (ie give the default class). Norbert Schwartz and Daniel Taupin have recommended accent management based entirely on prefix tests. (See the June 1992 GUT forum proceedings including some macros of Schwartz) CaesarCM makes prefixes one of many useful tests; its use of \skewchar as the basic prose font class identifier allows this diversity. *** Internal marking. All fonts distributed with CaesarCM are marked internally marked to assure that their behavior under CaesarCM is (normally) independant of the name assigned. The internal marking used is very strange; so it is well to explain first why mundane solutions seem to fail. For other TeX packages, the marking device most used is a distinctive prefix for the font name. This works because the filename of a font \myfont is available to the programmer through the \fontname primitive. For example, \edef\temp{\fontname\myfont} places the fontname (without the .tfm suffix) in the expansion of \temp for further processing. However, to minimize space needed and also hassle, CaesarCM recommends using extended CM fonts under the name of a naturally corresponding unextended CM font. Thus another marking device is needed. Other sorts of software, tend to use headers. Indeed, most data structures include headers. The .tfm format (which originated at Xerox Park) is no exception. Unfortunately TeX seems to heed little of this information and passes none on to the TeX programmer. One can readily store accessible information in extra font dimensions (see TeXbook page 433). Unfortunately, when one consults a nonexistant font dimension, an error message is produced. Here is the primary `mark' used by Caesar (version 2) (*) --- (small) positive depth for the ASCII character "5E, the hat accent. This indicates that the class is not CM. It also indicates that fontdimension 8 is present, which then leads to further information on the class. The hat is a character which, under normal typographic variation, will retain depth exactly 0, since its geometric "bounding box" is far above the base line. This information cannot be tampered with by other macro packages. Seemingly, it is reliable inasmuch as every alphabetical font (including PostScript type) that is likely to be encountered in prose will have hat in this position. You can test whether a .tfm file satisfies condition (*) by installing it as indicated in the main text, selecting the font in question, and then using the line {\catcode`\^=11\setbox0=\hbox{^^5e}\showthe\dp0} While only one font class is in use (the class of TM), no other information is needed. However other classes will be distinguished later on by special values of various fontdimensions. For example, it is expected that (**) --- a small negative value for fontdimension 8 will indicate that the font class is TM (or AD). When other indications are needed the above rules will be extended. Contact the author if the need arises. Postings of extended computer modern fonts will hopefully be accompanied by .tfm files that provide the above marking. If you find that this is not the case, you can use the command \skewcharacter\myfont=\CaesarFontClass Alternatively, here is a way to mark a given .tfm file as being of class TM. Use a conversion .tfm <--> .pl, as provided in a metafont installation, to be able to edit the .tfm file in its readable ASCII .pl form. Then change the .pl version by addition of a line (CHARDP R 0.0001) to the entry for the character number hex "5E = octal '136. This makes the depth .001 pt. (Negative depths are rejected by Knuth's PLtoTF program.) As for (**) you add a line of the form (PARAMETER D 8 R -0.0001) after the line (EXTRASPACE R ???????) specifying fontdimension 7. Since you can expect to need just a few fonts to obtain adequate hyphenation this "hacker's approach" should be adequate. APPENDIX. The Smart Accents Mechanism There is a fragility of the TeX kerning and ligature mechanism that is a serious limitation on the way this CaesarCM's announced behavior can be programmed. It is a surprising fact that TeX code intervening between two characters strongly tends to prevent kerning (and ligature) of the characters. Indeed any code that does not evaporate without trace under macro expansion (in TeX's mouth) seems to prevent kerning. For example, \count255=1 and {} both leave some trace, whereas \if\count255=0\count255=1\fi leaves a trace only if count register 255 is 0, and \empty never leaves any trace. The rather innocent looking traces mentioned here do not interfere with hyphenation. But they do prevent kerning (and ligature), as Bernd Raichle pointed out on the GUT list (July~1, 1992). In version~1 of CaesarCM, kerning between a ready-made accented character and the character preceeding it was hopelessly poisoned by spurious typesetting designed to test whether a ready-made accented character was present in the current font. Unused potential of the \skewchar mechanism of TeX provided means to skirt the above difficulty. First some background. There is an integer font parameter \skewchar which is automatically set to \defaultskewchar, normally -1, when a font is loaded. For some math fonts (e.g., cmsy but not cmmi), Knuth sets it in Plain TeX to an appropriate (positive) character code that then serves to control accent placement in math mode. It seems that \skewchar has never been exploited for prose fonts. The idea is to assign for each prose font a large negative value (one less than \defaultskewchar) to the function \skewchar that will serve to identify the extendion class of the font. Here is, in outline, how an accent macro like \'#1 then works. A `current extension class' integer register is first compared with \skewchar\font. If they coincide, the current accent handling macro is used. When extension class TM is current, this macro checks whether a ready-made accented character has been assigned to the triple TM,',#1; this is an \ifx...\fi test that leaves no trace if the answer is yes. If yes use it, and if no use the recipe of HyAcc-CM to form a composite character. This much runs at high speed, and in the case of ready-made accented characters, it allows kerns and ligatures. In the rare case when \skewchar\font is distinct from the current extension class, CaesarCM goes into a more time-consuming setup subroutine as follows. If \skewchar\font is still the initial value \defaultskewchar, then, as a preliminary step, determine the extension class as indicated in the two appendices on extended CM fonts, and reset \skewchar\font to this value, ending the preliminary step. Now reset the current extension class to \skewchar\font and \let the current accent handling macro be one predefined for that extension class. -------------------------- APPENDIX Oz. MACINTOSH COMFORTS FOR OzteX USERS. For Macintosh users, some documentation is provided in a reader application. This application should not be ramoved from your TeX volume because it carries icons useful for identifying font files for CaesarCM. Namely the bitmap and .tfm files for the CaesarCM mechanism get highly visible icons (distinct ones for OzTeX and for Textures). Other .pk's and .tfm's are unaffected. This originally applies to the the .pk's and .tfm's provided in the CaesarCM package for OzTeX. To maintain this behavior for other files you later introduce, you should use the universal Macintosh system tool ResEdit to change the type and creator strings respectively to **pk and '`^" *tfm and '`^" For this see "info..." in the file menu of ResEdit. Under some Macintosh systems it may be necessary hold these files on a diskette for the change. In all cases, to bring the new icons into view, the documentation reader should be kept present alongside the files. These icons make it clear for which fonts you already enjoy enhanced hyphenation. They do not, at present, reveal the degree of enhancement, but they may in future versions. -------------------------- APPENDIX Textures. Postings of the CaesarCM package include some extended CM fonts for Textures, the first implementation of TeX on the Macintosh. Macintosh format font data should reside in files of type FFIL; they carry distinctive suitcase shaped icons. The data is automatically accessed by Textures if it is placed in a folder called TeX Fonts which lies in the same folder as Textures. Suitcases can also be accessed from within Textures and through Suitcase II. The .tfm files for Textures are in Macintosh resources of type "*TFM". The contents of the resource coincides exactly with the ordinary .tfm file. Bitmapped fonts for Textures are of Macintosh norms rather than .pk. Each is of one of the following types. (a) resources of type "FONT", possibly accompanied by a resource of type "FOND" (b) resources of type "NFNT", possibly accompanied by a resource of type "FOND" Macintosh and Textures font administration seems to require that all magsteps for a given font be present in the same file and be (correctly) described by a single "FOND" resource. Think of a complete font like cmr10 as a triple: a *TFM, a FOND, and thirdly a bunch of bitmaps either of type FONT or NFNT --- essentially one bitmap for each magstep available, but a few extra for the preview. MAINTENANCE AND TRANSPORT of fonts for textures for Textures In practice, an absolute necessity for the administration of Macintosh bitmapped fonts is the utility Suitcase II and its sidekicks Font Harmony and Font&Sound Valet. The last of these provides compression --- twofold or better, which essentially corresponds to the passage in the TeX world from .gf (uncompressed) to .pk (compressed) . Suitcase II provides access to the compressed files. (The .pk compression is superior.) Font Harmony and Font&Sound Valet provide administration; in particular the maintenance of suitable FOND resources. Suitcase II costs about $50. So long as there is no competitive alternative to the use of Suitcase II, expect to find the extended fonts for Textures posted in Suitcase compressed format; such compressed fonts will not work at all without Suitcase. The inferiority of Suitcase II's compression relative to Rokicki's ".pk" compression means in practice that the cost of TM extending cmr10 is 75K rather than 40K --- for all seven magsteps; for magsteps <=2 it is 32K rather than 17K. Users of Textures with disk space problems often restrict to magsteps <=2. Use ResEdit for inspecting and editing all these font resources. Use it also to move all except the FOND-NFNT combination of of type (b) above. The latter job (only) should be left to FontDAMover. Exercise great caution in employing FontDAMover, particularly if any FONT resources are present: (a) Use only a very recent version of FontDAMover, and if you work under under Multifinder, assign it a maximum partition. (b) First use Font Harmony to eliminate incoherencies. (c) If FONT resources are present, first use ResEdit to remove them and their associated FOND's to another suitcase file. (d) Keep suitcase files down to moderate size and keep backup copies. Move just a few fonts at a time. Note that any FOND-NFNT combination that is moved with FontDAMover will be decompressed by the move. As compression is often extremely slow, it is better to replace such moves by copying and FontDAMover deletions. INSTALLATION AND REMOVAL of extended Mac fonts. Although the mechanics differ, the principles are exactly the same as for a generic TeX installation. Installation of extended fonts whose names do NOT coincide with fonts already installed is a trivial matter. Just push the suitcase containing the new fonts into the "TeX Fonts" folder residing in the same folder as Textures. For fonts supplied with CaesarCM this suitcase includes the relevant *TFM resources. Removal is the obvious inverse provess. In case they DO bear the names of CM fonts they extend, your extended fonts in effect replace the pre-existing fonts of this name. But, for purely administrative reasons, it is better to keep the extended fonts in their own suitcase. Then installation of the extended fonts neither removes nor destroys the font of the same name it is replacing. That is the users responsibility, and failure to attend to this will cause terrible chaos! Later removal of extended fonts is really the same process as installation (you replace the extended by the nonextended). Remember to attend to BOTH the .tfm's and the bitmapped fonts. Use font Harmony after every installation. Remember to recompile your format when the fonts it uses are modified. If you encounter strange behavior in spite of the above precautions, consider gradually rebuilding your font collection starting with the extended CM fonts under Plain TeX. Many collections are somewhat raggedy and need a rebuild after years of use. Half of those I have seen are in this category. CaesarCM is fully compatible with the CM/PS Postscript norm CM font collection marketed by Blue Sky Research; indeed bitmapped fonts in principle can be freely mixed with them. However this sort of configuration is the most complex in service and has the most bugs. Be alert for the following standard ailments that only ResEdit can detect: missing *TFM resources, duplicate *TFM and NFNT resources. CREATION OF BITMAPPED FONTS for Textures Blue Sky Research has permitted the posting on ftp rusinfo.rus.uni-stuttgart.de [129.69.1.12] of a collection of Macintosh Programmer Workshop (MPW) tools for the conversion of ".pk" and ".tfm" resources to equivalent FOND, NFNT, and *TFM resources. If you start from "marked extended CM fonts" for a generic TeX, you get after conversion the same for Textures. There are two technicalities to note. (a) There are .tfm files in some versions of Textures notably 1.4. These appear to be relevant to the use of fonts of PostScript norm only; try to ignore their presence; removal or tampering will cause PostScript fonts to misbehave. (b) Currently, *TFM files should be adjusted using the EdMetrics application to have --- Quickdraw name equal to their resource name, --- style Plain --- Quickdraw map of "Other" type, number 6 Check current distribution for possible changes! Appendix. DESARMENIEN'S PIONEERING WORK. Although this package was inspired by the availablity of the extended CM fonts of D. Taupin, it might reasonably have been inspired by rereading Jacques D'esarm'enien: How to run TeX in a French environment: hyphenation, fonts, typography, TUGboat, 5 (1984) 91-102. The key concept of a special font class with ready-made accented characters occurs, and this includes a membership test, albeit one acceptable *only* for French, namely small negative value for fontdim 7 (the extra space between sentences). With Desarmenien's macros, \`#1 is redefined as follows: if the current fontdimension 7 is negative and the macro argument #1 is e, then use a tailor-made e-grave, and otherwise use Knuth's original accent macro. Desarmenien remarks that he would have used extended CM fonts but for a limitation of the 1982 version of TeX, namely the impossibility of having true letters (with \lccode positive) in positions >127. He gives credit for an unspecified subset of his TeXnical tricks to Don Knuth and John Hobby. Laurent Siebenmann, Mathematique, bat 425, 91405-Orsay, France siebenmann@rsovax.ups.circe.fr (tex) siebenmann@LALCLS.IN2P3.FR POSTINGS: ftp rsovax.ups.circe.fr [130.84.128.100] ftp matups.matups.fr [192.54.146.4] Version 2 of Sept 1992 (alpha)