diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/turkish |
Initial commit
Diffstat (limited to 'language/turkish')
29 files changed, 11483 insertions, 0 deletions
diff --git a/language/turkish/README b/language/turkish/README new file mode 100644 index 0000000000..78186f3991 --- /dev/null +++ b/language/turkish/README @@ -0,0 +1,15 @@ +This is a first release of fonts and macros for Ottoman Turkish +and Modern Turkish in Roman letter transcription. It is a +do-it-yourself kit. You will have to run METAFONT to get the +fonts, and make a tplain.fmt file using the input files in +./inputs. Make sure that your environment does not grab the +wrong hyphen.tex file. The correct one is in ./inputs. + +For further information: + +Email: mackay@june.cs.washington.edu Pierre A. MacKay +Smail: Northwest Computing Support Group TUG Site Coordinator for + Lewis Hall, Mail Stop DW10 Unix-flavored TeX + University of Washington + Seattle, WA 98195 + (206) 543-6259 diff --git a/language/turkish/doc/tugpap.tex b/language/turkish/doc/tugpap.tex new file mode 100644 index 0000000000..36d5b1b804 --- /dev/null +++ b/language/turkish/doc/tugpap.tex @@ -0,0 +1,878 @@ +%**start of header +\catcode`@=11 % borrow the private macros of PLAIN (with care) + +\newskip\ttglue + +\font\elevenrm=cmr10 scaled \magstephalf % roman text +\font\eleventt=cmtt10 scaled \magstephalf % typewriter +\font\elevenit=cmti10 scaled\magstephalf +\font\ninebf=cmbx9 +\font\ninerm=cmr9 +\font\ninei=cmmi9 +\font\ninesy=cmsy9 +\font\ninett=cmtt9 +\font\ninesl=cmsl9 +\font\nineit=cmti9 +\font\sixi=cmmi6 +\font\sixsy=cmsy6 +\font\sixbf=cmbx6 +\skewchar\ninei='177 +\skewchar\ninesy='60 +\hyphenchar\ninett=-1 + +\def\ninepoint{\def\rm{\fam0\ninerm}% set in nine point families + \textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm + \textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei + \textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\nineit \def\it{\fam\itfam\nineit}% \it is family 4 + \textfont\slfam=\ninesl \def\sl{\fam\slfam\ninesl}% \sl is family 5 + \textfont\bffam=\ninebf \scriptfont\bffam=\sixbf + \scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam\ninebf}% \bf is family 6 + \textfont\ttfam=\ninett \def\tt{\fam\ttfam\ninett}% \tt is family 7 + \tt \ttglue=.5em plus.25em minus.15em + \normalbaselineskip=11pt + \setbox\strutbox=\hbox{\vrule height8pt depth3pt width0pt}% strut for 11pt + \let\sc=\sevenrm \normalbaselines\rm} + +\font\scaps=cmcsc10 % for \LaTeX +\font\lb=logobf10 +\chardef\bs=`\\ % backslash in a string +\def\;#1{{\it #1\/}} % The simplest and most useful of all. + +\input mftmac +\parindent=1.5pc % restore after mftmac clobbered it + +\font\ninetex=cmtex9 \hyphenchar\ninetex=-1 +\def\finstring"#1"{\ninetex"#1"\egroup} + +\def\Beginmft{\par\begingroup\ninepoint +% \chardef:=`\: \chardef!=`\! % \chardef==`\= + \catcode`\:=12 \catcode`\!=12 \catcode`\==12 + \def\mathsemicolon{\mskip\thickmuskip} + \let\;=\mathsemicolon + % nine-point type: + \def\bf{\fam\bffam\ninebf + \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}% + \ninebf} + \textfont\bffam=\ninebf \scriptfont\bffam=\sixbf + \scriptscriptfont\bffam=\fivebf + \baselineskip=11pt + \def\MF{{\manual hijk}\-{\manual lmnj}} + \let\big=\ninebig + \setbox\strutbox=\hbox{\vrule height8pt depth3pt width0pt} + \rm + \setbox\shorthyf=\hbox{-\kern-.05em} + \parindent=0pt + } +\def\Endmft{\par + \endgroup} + +\input tkccode +\font\tentk=tkr10 +% \font\elvntk=tkr11 +\font\tenti=tkti10 +% \font\elvnti=tkti11 + +\def\BeginTurkish{\par \begingroup +% \chardef:=`\: \chardef!=`\! % \chardef==`\= + \def\`{\char'43}\def\'{\char'100}% + \catcode`\:=12 \catcode`\!=12 \catcode`\==12 + \sfcode`\:=1000 \sfcode`\!=1000 \sfcode`\==1000 % Frenchspacing after +% these + } +\def\EndTurkish{\par %let's be quite certain about this! + \endgroup} +\def\verbatim#1{\begingroup\ninepoint \frenchspacing + \def\do##1{\catcode`##1=12 } \dospecials + \catcode`\:=12 \catcode`\!=12 \catcode`\==12 + \parskip 0pt \parindent 0pt + \catcode`\ =\active \catcode`\^^M=\active + \tt \def\par{\ \endgraf}\overfullrule=0pt \obeylines \obeyspaces + \input #1 \endgroup} +% a blank line will be typeset at the end of the file; +% if you're unlucky it will appear on a page by itself! +{\obeyspaces\global\let =\ } + +\font\titlefont=cmr17 +\font\namefont=cmcsc10 scaled \magstep1 +\font\twelvebd=cmbx12 +\font\sixrm=cmr6 + +\vsize=43pc +\hsize=29pc +\parindent=16pt +\nopagenumbers +\normalbaselines +\footline={\hss\sixrm\folio\hss} +\def\makefootline{\baselineskip3pc\line{\the\footline}} +\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}% + \advancepageno + \vsize=45pc + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} +\def\makeheadline{\vbox to\z@{\vskip-22.5\p@ + \line{\vbox to8.5\p@{}\ifnum\count0=1 + \else\ifodd\count0 + \hfill\the\doctitle\ignorespaces + \else \the\authorname\hfill\fi\fi}\vss}\nointerlineskip} + +\newtoks\doctitle \newtoks\authorname + +\doctitle={The Ottoman Texts Project} +\authorname={Walter Andrews and Pierre MacKay} +% Added to the general format file +% an addition needed by mftmac +\def\ninebig#1{{\hbox{$\textfont0=\tenrm\textfont2=\tensy + \left#1\vbox to7.25pt{}\right.\n@space$}}} +\catcode`@=12 % at signs are no longer letters +\tenrm +\begingroup +\titlefont +\the\doctitle\hfil +\vskip 3pc +\namefont\the\authorname\hfil +\tenrm +\vskip 1pc +{\obeylines +Department of Near Eastern Languages and Civilization +University of Washington +Seattle, Washington 98195 +} +\vskip 3pc +\line{\hfill\twelvebd ABSTRACT\hfill} +\vskip 3pc +\leftskip 4pc \rightskip 4pc +The Turkish orthographic reform of 1928, which required the abandonment +of Arabic script in favor of a Latin letter alphabet, was accompanied +by a cultural rejection of all literature from the +Ottoman period of Turkish history. As a result, only a small part of +Ottoman Turkish literature has been made available in scholarly editions +in the new orthography. The Ottoman Texts Project is a cooperative +effort of Turkish and North American scholars to provide new editions +of these works using popular low-priced personal computer systems and +standard general purpose software. This paper describes an approach +based on the adoption of \TeX\ as the preferred output system for +publication. +\par +\endgroup +\vskip 3pc +%**end of header +\font\eightrm=cmr8 +\def\sc{\eightrm} + +\font\huge=cmr17 scaled \magstep2 +\def\dropinitial#1#2{\def\biginitial#1{{\huge#1}}% + \def\makeinitial#1{\setbox8\hbox{\strut\vbox to 1.3ex + {\hbox{\biginitial#1}\vskip -4pc plus 3.5pc minus 3.5pc}}}% + \makeinitial#1% + \ifdim\parindent>1.3\wd8\dimen8=\parindent + \else\dimen8=1.3\wd8\fi + \hangindent=\dimen8\hangafter=-2 + \noindent + \strut\hskip-1\dimen8\box8{\sc#2}}% + +\noindent +The Ottoman Texts editing and typesetting project +represents an attempt to provide a simple, low-cost +system for the entry, editing, and typesetting of +transcribed [romanized] Ottoman Turkish texts. The +purpose of developing such a system was to take advantage +of the increasing availability of microcomputers +world-wide and to induce the editors of Ottoman texts-- +especially Turkish editors--to employ electronic media +for their editing tasks. The benefits to scholars of +having a large corpus of texts available in +machine-readable form seem obvious, but overcoming +``technology cringe'' on the part of scholars whose +devotion to medieval literature stems in large part from +a strong conservative-traditionalist ideological bent is +no small task. Nonetheless, the rewards of converting a +significant number of such scholars would be quite high. +The vast majority of significant Ottoman Turkish texts +await up-to-date editing and the suggested technological +change could have a major impact on the speed and +accuracy of the editing process as well as on the +development of lexicographical tools and on many areas of +literary and linguistic study. + + The situation in Ottoman studies that makes a +switch to electronic media especially attractive at this +time is rather complex and demands some historical +introduction. From its earliest years at about the +beginning of the 14th century until early in the 20th +century, the Ottoman dialect of Turkish was written in +the Arabic script. The political decline of the Ottoman +Empire from its pinnacle of world power in the 16th +century to its status as a moribund, defeated ally of +Germany following World War I, was arrested in the first +three decades of this century by a political and +ideological revolution that saw the establishment of a +Turkish Republic and an accompanying rejection of the +literary, cultural, and religious institutions of the +Ottoman past. One aspect of the cultural revolution was +the adoption of a latin letter alphabet for Turkish, a +change which had among its +consequences the expansion of literacy beyond a small +elite circle to the general populace, a conscious effort +to simplify the written language, and a resultant major +decline in the ability to read and comprehend the Ottoman +literary language in any of its forms. The ethos of the +early years of the Republic, to which the Ottoman Empire +appeared as decadent and its culture as derivative, also +meant that, at a time when the scholarly edition of older +texts was becoming a growing concern in other parts of +the world, in Turkey interest in things Ottoman, +including Ottoman texts, was considered backward, +anti-nationalist, counter-revolutionary, and +wrong-headed. As a result, very few texts were +adequately edited and the population in general was +further cut off from its historical past. Since the +Second World War, however, there has been an increased +scholarly interest in Ottoman texts and in the +transcription and edition of such texts. This interest +has grown with the growth of a tolerance for some +reemergences of older ethical, religious, and cultural +practices and attitudes. + + It is clear that the particular situation in +Turkey today lends itself to the adoption of editing +methodologies that take advantage of computer technology: +there is a large cadre of well-educated persons with very +positive attitudes toward technological innovation; the +Latin alphabet is used [with modifications for Ottoman +transcription]; most of the basic editing work remains to +be done; there is already great interest in the types of +concordancing, indexing, lexicographical analysis, etc. +that can be most easily done by computers. Nonetheless, +Ottoman studies is still an area that attracts persons +who would be least likely to welcome technological +innovation and so any change would need to bring +immediate and obvious benefits. When the editing project +was initiated, it was decided that the result should have +the following characteristics: + +\medskip +\noindent1.\quad It should be easy to use even for the most +unsophisticated user. + +\noindent2.\quad It should be adaptable to many different +circumstances and should be easily supportable. + +\noindent3.\quad It should obviously eliminate the need for +more than one entry of the basic text. [This is, of +course, common to all computer word-processing systems +but it is such a major departure from the usual round of +draft typings that its benefits must be emphasized to +those who have not experienced it.] + +\noindent4.\quad It should be capable of producing typeset +camera-ready copy for printing. [This is a major +potential benefit even in Turkey where the costs of more +labor-intensive typesetting methods are growing rapidly.] + +\medskip + + The project developed in several stages and was +not without its problems and false starts. The first +stage involved convincing a noted Turkish scholar and +respected editor of Ottoman texts to come to the +University of Washington to attempt to edit the collected +poems of a 16th century Ottoman poet using the IBM XT +already employed by the Department of Near Eastern +Languages and Civilizations for the development of +Turkish character-sets. Scholarly processes being what +they are it turned out to be easier to bring the scholar +than to have the necessary word-processing capabilities +ready when he arrived. As a result, a rather cumbersome +combination of Microsoft's WORD, Rosesoft's ``smart key'' +program [PROKEY], and a series of BASIC programs +developed by Robert Blum of the UW administration was +used to enable the Turkish visitor to input and edit +about 90\% of the poems in the collection [over 500 poems] +in about three months. The editor, who had had no +previous experience of computers and no particular liking +or aptitude for them, was an eager and willing convert to +the process. Prior to his departure, we were also able +to employ a simple translation program which converted +the character-set designed for the XT to \TeX\ notation +and, subsequently, to produce a typeset sample of the +edited text on the SUN +minicomputer. The reaction of our visitor to the +results of this process, which was carried out with the +help of two fellow scholars without the intervention of +typists or typesetters, was pure delight and amazement. + + In the ensuing months the project has been +considerably refined and improved. With the invaluable +assistance of the UW Humanities and Arts Computing +Center and its resident character-sets guru, Gerald +Barnett, we have been able to develop a word-processing +system that is simple, efficient, flexible, and low-cost. +The system is based on Quicksoft's PC WRITE program used +with EGA/VGA and compatable graphics hardware.\footnote{$^*$}{NOTE: At +present, the system produces a host of irritating ``ghost +diacritics'' when used with the IBM PS 2 graphics--these +are a distraction more than a real hinderance but, as +yet, we have no idea why they occur.} The advantages of +PC WRITE for this kind of word-processing are numerous +but it is worth mentioning a few in some detail. + + Given the goal of making this technology widely +available among scholars and students [especially among +foreign students and scholars], the fact that PC WRITE is +low-cost, share-ware [\$89.00 with full support] makes it an +attractive alternative. Moreover, PC WRITE permits +virtually limitless customization of keyboards, fonts, +printer controls, etc. in a manner accessible to persons +without any knowledge of programming or programming +languages. Using a simple set of programs--a program +designed at Duke University for the creation of +characters for display on an EGA driven monitor and a +program being developed by Gerald Barnett of the UW for +the production of downloadable printer fonts--we have +been able to produce a word processing system that can +display and edit an extended IBM character-set, which +will allow the use of modern [roman alphabet] Turkish, +the romanized transcription of Ottoman Turkish [Arabic +alphabet], and a full English characters font. One can +also switch instantly between a standard IBM +keyboard, an IBM keyboard adapted to Turkish +characters, and the standard Turkish keyboard with +extensions for the Ottoman character-set. In addition, +the system supports draft printing on the IBM Pro Printer +and letter quality printing on the NEC and Toshiba 24 pin +printers [with the use of a bi-directional tractor]. + + The extended IBM character-set uses 8 of the +special European characters, 32 special Ottoman +transcription characters [on ASCII codes 192--223], and 9 +special modern Turkish characters [on ASCII codes +225--233], as well as the full English set. All of the +modern Turkish characters appear as characters on the +modified standard keyboard. The Ottoman Turkish +characters [standard English characters with diacritics] +are called up by two-key sequences. For example, a ``d'' +with a dot under it is produced by striking ``/'' followed +by ``d''; all other special Ottoman characters are produced +by the same sequence [``/''$+$``character'']. Keyboard +arrangement and the particular character used to call up +the special characters can be easily modified to suit the +preferences of the user. + + One fortunate aspect of the print control features of PC +WRITE for this project +is that the print control program can be set up to +support two different fonts for each character. +Therefore, \TeX\ notation can be provided as an alternative +for each character and translation from the usual +word-processor font to \TeX\ notation can be done +automatically by simply printing in the \TeX\ input character set to +another file. Because PC WRITE produces ``clean'' ASCII +files, the material is immediately ready for typesetting +in whatever \TeX\ environment is being used. + +\medskip +\centerline{{\elevenrm Accented character sets in \TeX}} +\smallskip + +\noindent +In the few years since +the official release of \TeX, a number of +attempts have been made to adapt the program to languages other than +English. The best known successes have depended on adaptations of the +program itself, partly because the standard release of \TeX\ can +support only one system of hyphenation at a time, which makes a truly +bilingual document quite difficult to produce. These adaptations may +be broadly classed as program-based extensions of the language. The +extension which is most obviously necessary is the addition of a +primitive which can control the switch between one predigested +hyphenation pattern and another. Michael Ferguson's bilingual CNRS-\TeX, +which was initially developed for an environment in the province of +Quebec, where French and English are constantly intermingled, is one +of the outstanding developments in this class of adaptations, and +there are others as well. + +A second extension is needed to get around the problem of hyphenation +in languages which make use of diacriticals and accents. The basic +form of \TeX\ will reject any word containing an accent from the +evaluation routine +which normally looks for acceptable hyphenation breaks. In effect, +any word with an accent is treated as if it were an unbreakable +horizontal box, and is not evaluated for hyphenation at all. This can +make line-breaking very difficult, and several users of \TeX\ have +found it necessary to introduce a loop into the program so that +accents and diacriticals will be stripped out just before the entry to +the hyphenation routine, and then returned to their remembered positions +after the discretionary hyphen nodes have been inserted into the word. + +The disadvantage of both these systems is that the adapted program is no +longer \TeX. It is often possible to add the extra features in such a way +that the resultant program will produce {\tt DVI} files that are +indistinguishable from those generated by \TeX, but the extra features +are not generally available on all systems which run \TeX, and the +user is often excluded, therefore, from some of the most popular small +system versions of \TeX. + +An alternative solution to the problem of accented languages, though +not of bilingual hyphenation patterns, is a font-based, rather than a +program-based approach. Font characters may be generated with the +accents already applied, and mapped into unused or little-used areas +of the normal Computer Modern font table. If these characters are +then supplied with an appropriate \TeX\ {\tt\bs lccode} value, the +hyphenation loop will recognize them as part of a sequence capable of +being hyphenated. For a monolingual application in a language which +makes intensive use of accents and diacriticals, this can be an +attractive approach, especially when there are reasons for wishing to +preserve the ability to make use of small system versions of \TeX. +This is the approach we have taken for Turkish \TeX. + +Turkish provides a delightfully vivid set of examples of accentuation +and hyphenation. The Latin-letter character set which has been in +use since the orthographic reform of 1928 is extended, even in Modern +Turkish, by means of a considerable number of diacriticals and accents. A +diligent search through the modern dictionary will produce several +five- and six-letter words in which every character is accented, and an +intensive search might come up with words as much as nine letters long +with every character accented. In critical editions of Ottoman texts, +the number of accents more than doubles. Modern Turkish knows only +the accented and unaccented pair of letters `{\bf s}' and `{\bf\c s}', but +Ottoman Turkish has `{\bf s}', `{\bf\c s}', `{\bf\d s}' and `{\bf\b s}', which +represent four completely distinct characters in the Arabic alphabet. +The letter `{\bf h}' shows almost as much variety, and so do several +others. Our Ottoman Turkish font has twenty-seven accent and letter +composites, in addition to the basic twenty-six simple Latin letters. +Moreover, all composites can exist in upper case forms as well as in +lower case. + +When a character set is as heavily accented as this, it is desirable +to make sure that the accents are positioned over their letters as +exactly as possible. The {\tt\bs accent} primitive in \TeX\ does a +remarkably good job of positioning accents, but it depends on a very +general algorithm, and tends to place accents exactly centered over +or under the affected character, no matter what the appearance of +that character may be. Donald Knuth recognized this limitation in +the very earliest stages of the development of \TeX, and has +consistently recommended that frequently used combinations of +character and accent be developed as composite single images in the +font. The center of a character is not always the best visual +position for an accent; top accents should often be slipped just a +bit to the right, and bottom accents just a bit to the left of the +mechanically defined centerline of the character. Height and depth +of accents are similarly subject to aesthetic judgement. +The{\tt\bs accent} primitive of \TeX\ works very well indeed for +sparsely occurring accentuation, but not so well when accents occur +in every second word. + +The problem of hyphenation in Turkish is even more striking. Turkish +is known as an ``agglutinating'' language, which means, in effect that +each discrete logico-syntactic qualification of a basic word is +expressed in a single syllable tacked onto all the other syllables in +the word. At the same time, it is a language in which consonant +clusters are virtually unknown. A Turkish word is made up of simple +open and closed syllables, of the form {\tt cv} or {\tt cvc}, and in +native words there is not even the distinction between long and short +vowels. The result is a language in which word-length tends to be +greater than it is even in English, and where, as a result, +hyphenation is often necessary. The hyphenation rules are inherited +from the syllabification of Arabic. A syllable is assumed always to +consist of an initial consonant (even when that consonant is no longer +written) and to terminate in a vowel or in the next unvowelled +consonant. This pattern is followed so absolutely that it is +permitted to break up native Turkish suffixes. The plural suffix \;{ +-ler-} will be hyphenated as \;{-le-rine} in an environment where +the {\tt -cv-cv-cv} pattern predominates. + +A set of hyphenation patterns for Turkish will therefore be quite +simple to produce, but it will have no effect on most Turkish words +unless something is done about the problem of accents. A word such as +\;{\c cektirilebilecek} ought to provide six discretionary +hyphenation nodes: \;{\c cek-ti-ri-le-bi-le-cek}, but the {\tt\bs +accent} primitive applied to the first letter will guarantee that the +standard version of \TeX\ gives up any attempt to hyphenate it at +all.\footnote{$^*$}{The word is a future participle, and describes +something as being +capable of being extracted at some time in the future--like a tooth. +A morphological division of the word would produce a very different +hyphenation pattern, \;{\c cek-tir-il-e-bil-ecek}, with only five nodes.} +If the initial letter `{\bf \c c}' were a single character in a special +font, and were provided with an {\tt\bs lccode} value, the {\tt\bs +accent} primitive would no longer appear, and the word could be +evaluated for hyphenation. + +Since the majority of \TeX\ users will never have to deal with {\tt\bs +lccode}s at all, a word of explanation is in order here. \TeX\ +is designed to take care of the problems of typesetting in a +general manner, independent of the language of the text to be +set. The program recognizes that while many languages have +paired upper and lower case character sets, not all do, and the +order of the basic text character set may not be that of the +Latin alphabet. For this reason, specific upper and lower case +pairings are not built into the program, but are supplied by +macro definitions in {\tt plain.tex}. Like all other +definitions in plain.tex, they may be replaced, and it is quite +possible to dispense with plain.tex altogether, and substitute +another basic format file such as {\tt sadece.tex}, {\tt +franc.tex}, {\tt einfach.tex} or {\tt sketo.tex}. (Knuth +insists, for obvious reasons, that the one thing you may not call it is +``plain.tex.'') If additional characters such as the accented letters +of Turkish are made part of the basic input coding table, then they +are likely to exist in upper and lower case pairs. Each lower case +code is given itself as a lower case {\tt\bs lccode}, and the code of +its upper case equivalent as its {\tt\bs uccode}. These can be used +to force conversion from one case to the other, but the {\tt\bs +lccode} serves an additional purpose. When \TeX\ enters the program +loop which searches for discretionary hyphen nodes in each word, it +first unpicks all ligatures such as {\bf ffi} and then evaluates the +resultant list from the beginning, +working on any given word only so long as every character it +finds has a valid {\tt\bs lccode}. Any node that is not a simple +character with a valid {\tt\bs lccode} causes the routine to terminate; +the sequence so marked is supplied with no discretionary +hyphen nodes at all, and therefore cannot be broken by the +line-breaking algorithm. This is what prevents hyphenation in the +case of the Turkish word given above. + +\medskip +\centerline{\elevenrm Input Code Interpretation} +\smallskip + +\noindent +The Turkish text-editing system described above +is driven from a keyboard mapped to conform as +closely as possible to the standard Turkish typewriter keyboard. +This mapping is not used directly in the design of the Ottoman +Turkish font and, in its present form, +is isolated from the actual \TeX\ input. After the +raw input has been corrected, it is passed through a filter which +converts the accented characters into character pairs (or, in a very +few instances, into \TeX\ command sequences). These pairings are +based on a proposal made more than ten years ago at the Orientalist +Congress held in Paris, in 1974. Owing to the extraordinary richness +of the Ottoman Turkish character set, it has been necessary to extend +the old proposal, but it still retains the original principles, which +are closely associated with the coding scheme used by the Onomasticon +Arabicum project. The Onomasticon Arabicum uses a post-positive dot +and a post-positive hyphen to indicate diacriticals, which is +acceptable in a data-base of names, but not in continuous prose text. +To provide the indications for Ottoman Turkish diacriticals, +we have taken over the exclamation +point `{\tt!}', the equals sign `{\tt=}', and the colon `{\tt:}'. + +The exclamation point is used for all the ``emphatic'' letters of the +Arabic alphabet (the alphabet in which Turkish was written until +1928). These are the letters \;{\d Dad} (usually pronounced as `{\bf z}' in +Turkish, and hence paired with a non-Arabic letter known as \;{\.Zad}), +\;{\d Sad}, \;{\d Ha'}, \;{\d Ta'} and \;{\d Za'}. +The equals sign is used for all the +consonants which are represented in Latin-letter transcriptions by a +letter with a bar under, such as {\bf\b d} (\;{dhal}), more +commonly written in +Turkish as `{\bf\b z}', and also for vowels with a macron or, following the +Turkish convention, a `hat' accent, and similar forms, chosen like the +cupped `{\bf\u g}', because the equals sign is visually closer than the colon +is. (Moreover, the colon is needed for a different variety of the +letter `{\bf g}'.) The colon is a catch-all for everything else, but works +out rather well visually, as it happens. The three post-positives are +not accents, but regular characters, which use the \TeX\ convention of +ligatures to invoke accented characters from the font, just as the +second `{\bf f$\,$}' in the normal \TeX\ `{\bf ff}' +ligature pair does. If a standard +Latin-letter character does not have an associated ligature table in +the font, a following colon will be unaffected. +Thus, the letter `{\bf o}', +when followed by a colon will produce `{\bf\"o}', but the letter `{\bf e}' when +followed by a colon will produce `{\bf e:}'. The equals sign is returned to +its normal function in math mode, and the colon and exclamation point +can be invoked by the command sequences {\tt\bs:} and {\tt\bs bang} +when the simple character will not work. + +This set of conventions produces an input file which can, if +necessary, be edited on a ordinary terminal lacking the special +Turkish character features, and which a Turkish speaker can become +accustomed to without too much difficulty. When coupled with a +well-designed macro file and a rewritten hyphenation table, it +provides the possibility of naturalizing a \TeX\ environment into +Turkish without any large investment in special purpose hardware and +rewritten versions of non-standard (non-)\TeX. + +\medskip +\centerline{\elevenrm The Font} +\smallskip + +\noindent +Donald Knuth's Computer Modern fonts come with a wide range of accents, which +cover most of the requirements for Turkish. The only obvious lack is +the flat cup which is used under both upper and lower case `{\bf h}' as +an aesthetic variant for the simple bar under the letter. All the +existing accents in Computer Modern are designed for consistency +with the stroke-weights and proportions of the underlying alphabetic +characters, and it is therefore very desirable to +retain the details of this design in any associated font of accented +characters. The vertical and horizontal positions +may be altered and, for other languages than Turkish, the angle of +acute and grave accents over upper case letters, but the basic +proportions of each accent or diacritical remain unchanged. This is +achieved by taking over the entire text of the Computer Modern +character file {\tt accent.mf} and converting the {\tt beginchar +$\ldots$ endchar} pairs to {\tt def} and {\tt enddef}. It is +not quite so easy as that, but the process is essentially mechanical, +and guarantees the preservation of all the essential design details for +each accent. (The flat cup under `{\bf h}' is based on the slavic tie +accent, turned upside down.) The resultant file, {\tt accdef.mf}, +is now full of ``definitions'' which can be +invoked as part of the program file for composite characters. +Positioning, however, can not be entirely taken care of in the +{\tt accdef.mf} file. The accents in {\tt accent.mf} +are, for the most part, designed with a fixed reference +point at the top of the image, but correct positioning usually +requires a knowledge of where the bottom edge will be. It is +herefore necessary to take some of the calculations from the accent +definitions, and incorporate them into the description of the +underlying character. For example, the superscript dot accent in the +Computer Modern font is produced as follows. +\medskip +\Beginmft +$\2{iff}\\{ligs}>0\?\2{cmchar}\7"Dot accent";$\par +$\2{numeric}\\{dot\_diam}\SH ;\ \\{dot\_diam}\SH =\1{max}(\\{dot\_size}\SH ,% +\\{cap\_curve}\SH );$\par +$\2{beginchar}(\1{oct}\7"137",5u\SH ,\1{min}(\\{asc\_height}\SH ,\frac10/{7}% +\\{x\_height}\SH +.5\\{dot\_diam}\SH ),0);$\par +$\2{define\_whole\_blacker\_pixels}(\\{dot\_diam});$\par +$\2{italcorr}h\SH \ast \\{slant}+.5\\{dot\_diam}\SH -2u\SH ;$\par +$\2{adjust\_fit}(0,0);$\par +$\2{pickup}\\{tiny}.\\{nib};\ \\{pos}_{1}(\\{dot\_diam},0);\ \\{pos}_{2}(\\{dot% +\_diam},90);$\par +$x_{1}=x_{2}=.5w;\ \\{top}\,y_{2r}=h+1;$\par +$\2{if}\\{bot}\,y_{2l}<\\{x\_height}+o+\\{slab}\?y_{2l}:=\1{min}(y_{2r}-% +\\{eps},\\{x\_height}+o+\\{slab}+.5\\{tiny});\3{fi}$\par +$y_{1}=.5[y_{2l},y_{2r}];\ \\{dot}(1,2);\ \9 dot\par +$\2{penlabels}(1,2);\3{endchar};$\par +\Endmft +\medskip + +\noindent +The corresponding {\tt accdef.mf} definition is + +\medskip +\Beginmft +$\2{def}\\{dot\_accent}(\2{suffix}\$,@)(\2{expr}\\{dotY\_shift})=$\par +$\2{save}@;$\par +$\2{forsuffixes}\\{\$\$}=@,@_{\_}\?\2{transform}\\{\$\$};\3{endfor}$\par +$\2{numeric}\\{dh}\SH ;\ \\{dh}\SH :=\1{min}(\\{asc\_height}\SH ,\frac10/{7}% +\\{x\_height}\SH +.5\\{dot\_diam}\SH );$\par +$\2{define\_whole\_blacker\_pixels}(\\{dh},\\{dot\_diam});$\par +$\2{pickup}\\{tiny}.\\{nib};\ \\{pos}_{@\_1}(\\{dot\_diam},0);\ \\{pos}_{@\_2}(% +\\{dot\_diam},90);$\par +$x_{@\_1}=x_{@\_2}=x_{\$};\ \\{top}\,y_{@\_2r}=\\{dh}+1;$\par +$\2{if}\\{bot}\,y_{@\_2l}<\\{x\_height}+o+\\{slab}\?y_{@\_2l}:=\1{min}(y_{@% +\_2r}-\\{eps},\\{x\_height}+o+\\{slab}+.5\\{tiny});\3{fi}$\par +$y_{@\_1}=.5[y_{@\_2l},y_{@\_2r}];$\par +$\2{numeric}\\{dot\_span};\ \\{dot\_span}=\\{dh}-\\{bot}\,y_{@\_2l};$\par +$@=\\{identity}\2{if}\\{dotY\_shift}<>0\?\6{shifted}(0,\\{dotY\_shift}+\\{dot% +\_span})\3{fi};$\par +$\2{for}n=1,2\?\2{forsuffixes}e=l,,r\?$\par +\quad$z_{@}[n]e=z_{@\_}[n]e\6{transformed}@;\3{endfor}\3{endfor}$\par +$\\{dot}(@_{1},@_{2});\ \9 dot\par +$\2{penlabels}(@_{1},@_{2});\3{enddef};$\par +\Endmft +\medskip + +To get this into position over the letter `{\bf o}', requires the +following program text, + +\medskip +\Beginmft +$\2{cmchar}\7"The letter dotted o";$\par +$\\{dot\_sharp\_values};$\par +$\2{beginchar}(\1{oct}\7"025",9u\SH ,\\{dot\_top}\SH ,0);$\par +$\2{italcorr}\frac1/{3}[\\{x\_height}\SH ,\\{asc\_height}\SH ]\ast % +\\{slant}-.5u\SH \2{if}\\{serifs}\?+.25\\{dot\_diam}\SH \3{fi};$\par +$\2{adjust\_fit}(\2{if}\\{monospace}\?.5u\SH ,.5u\SH \2{else}\?0,0\3{fi});$\par +$\\{penpos}_{1}(\\{vair},90);\ \\{penpos}_{3}(\\{vair}',-90);$\par +$\\{penpos}_{2}(\\{curve},180);\ \\{penpos}_{4}(\\{curve},0);$\par +$x_{2r}=\1{hround}\1{max}(.5u,1.25u-.5\\{curve});$\par +$x_{4r}=w-x_{2r};\ x_{1}=x_{3}=.5w;\ y_{1r}=\\{x\_height}+\1{vround}1.5\\{oo};\ +y_{3r}=-\\{oo};$\par +$y_{2}=y_{4}=.5\\{x\_height}-\\{vair\_corr};\ y_{2l}:=y_{4l}:=.52\\{x% +\_height};$\par +$\2{penstroke}\\{pulled\_arc}_{e}(1,2)\AM \\{pulled\_arc}_{e}(2,3)$\par +\quad${}\AM \\{pulled\_arc}_{e}(3,4)\AM \\{pulled\_arc}_{e}(4,1)\AM \1{cycle};\ +\9 bowl\par +$\2{numeric}\\{dot\_shift},\\{dot\_top};$\par +$\2{define\_whole\_blacker\_pixels}(\\{dot\_diam},\\{dot\_top});$\par +$\\{dot\_shift}=0;\ \9 in this case, the position happens to be correct\par +$x_{7}=x_{1}-.8\\{dot\_diam};\ x_{8}=x_{7}+1.6\\{dot\_diam};$\par +$\\{dot\_accent}(7,a,\\{dot\_shift});$\par +$\\{dot\_accent}(8,b,\\{dot\_shift});$\par +$\2{penlabels}(1,2,3,4,7,8);\3{endchar};$\par +\Endmft +\medskip + +\noindent +in which the line + +\medskip +\Beginmft +$\\{dot\_sharp\_values};$\par +\Endmft +\medskip + +\noindent +expands to a macro + +\medskip +\Beginmft +$\2{def}\\{dot\_sharp\_values}=$\par +$\2{numeric}\\{dot\_diam}\SH ;\ \\{dot\_diam}\SH =\1{max}(\\{dot\_size}\SH ,% +\\{cap\_curve}\SH );$\par +$\2{numeric}\\{dot\_top}\SH ;\ \\{dot\_top}\SH =\1{min}(\\{asc\_height}\SH ,% +\frac10/{7}\\{x\_height}\SH +.5\\{dot\_diam}\SH );$\par +$\!\3{enddef};$\par +\Endmft +\medskip + + +\noindent +which repeats some of the calculations made in the definition of the dot +accent. + + +The composites that result from this programming effort look, for the +most part, identical to the results of the application of the {\tt\bs +accent} primitive to characters in the regular Computer Modern fonts. +The one major difference comes in the shape of the ``hat'' accent over +the letter `{\bf i}'. In this instance, the accent would spread beyond the +left and right side bearings of the underlying character and mess up the +letter spacing if it were +not pinched in, so a special narrow hat accent is provided for `{\bf i}'. +The proportions of each stroke remain essentially the same as +those in the original model, but they form an acute angle over the top +of the letter. Except in the case of this character and some of the +uniquely Turkish dotted uppercase letters, +it will probably be difficult to distinguish the two styles of accent +in the final printed version even when they are +intermingled in the same text. + +The creation of the composite characters is only the first stage in +the development of the font. Next, the italic correction must be set +for all the italic and slant fonts. This is the spacing that may be +added to the right side of any slanted character to prevent it from +running into something like a non-slanted closing parenthesis. There +does not seem to be any way except visual inspection to discover an +acceptable italic correction. One wants a fairly simple, general +calculation, but one which will do rough justice +to all slanted versions of the character. There were more proof +copies generated to get the italic correction right than for any other +feature of the font. (In the absence of any accessible system on which +proofs could be displayed on the screen, a great many paper proofs had +to be generated.) + +Following this comes the generation of ligature and kerning tables, +which are necessarily quite large, and need to be carefully worked out +since there is only a finite region of a {\tt tfm} file that can be +devoted to them. The smaller of the two ligature tables, for the +italic fonts, is shown in appendix A. It still needs one further refinement; +the kernings appear in the order of English letter frequency, and it +might be possible to gain a little efficiency by rearranging some of +them. Notice that the `{\bf f$\,$}' ligatures are altogether eliminated. +In Turkish it is essential to retain the distinction between the +dotted and the undotted `{\bf i}, which cannot be done if the `{\bf +fi}' ligature is used. The problem that arises, in fact is to provide +adequate separation between the dotted `{\bf i}' and a preceding `{\bf +f$\,$}'. + +In addition to the accented characters, it was necessary to design +three additional characters for Ottoman Turkish. The simplest is +a dot at about the bar height of lower case `{\bf e}'. This is +used for a type of Persian suffix known as ``izafet,'' which is +very common in Ottoman texts. The remaining two characters are +representations of the Arabic letters ``Ayn'' and ``Hamza,'' which +are conventionally represented by opening and closing single +quotes in most fonts. The ``lazy man's \;{`ayn}'' (as just +illustrated) is acceptable for the occasional reference, but not +for extensive literary texts. Ayn is not an accent, it is a +regular consonant of the Arabic alphabet and Hamza, though it can +be omitted in many positions is also a consonant. What is needed +is a pair of characters which are clearly distinguishable from +single quotes, but sufficiently like them to conform with the +general appearance of Computer Modern. The programs shown below, +draw on the same standard definition as is used to generate the +single quotes, but alter the position and the proportions. The +bulb is uppermost in both instances, and is somewhat smaller than +the bulb of the close quote. The tail is brought out further from +the side of the bulb, and is tucked more tightly under. The +versions for slanted and italic fonts use some special +transformations to insure that the {\tenti \`ayn} (that was the +character from the Ottoman font) is correctly formed. In +effect, the character is built out to the left of the centerline, +with a reverse slant, and then reflected back into the normal letter space. +The program for these characters is Appendix B. + +A complete passage from our first proposed critical text edition is +given below, first in \TeX\ input coding, and then as typeset. The +text from which this passage was extracted runs to twelve pages, and +was set without the benefit of a properly rewritten hyphenation table. +By good luck, most of the English pattern hyphenations turned out to +correspond with acceptable Turkish hyphenations, but it will certainly +be necessary to make up a proper Turkish hyphenation table in the near +future. When that is done, and an appropriate set of formatting +macros has been written to isolate Turkish text from non-Turkish text +and math mode, we will have a Turkish language adaptation of \TeX\ +which can be exported onto any small \TeX\ system, with no alteration +of the program whatsoever. The full range of standard Computer Modern +font styles will be available, and will blend in perfectly with the +normal unaccented library of Computer Modern fonts. We will not have +a truly bilingual version of \TeX, but for a predominantly Turkish +language environment we will be offering a cheaper and more accessible +monolingual font-based adaptation. + +\bigskip +{\verbatim {Tktexinput} } + +\bigskip +\BeginTurkish +\tentk +\`A=s:ik!lik! zama=ninda \`is:k! va=sit!asi ve s:eyda=lik! \`a=lemi:nde +s:evk! vesi=lesi:, vus!lat eyya=minda mah!abbet muk!tez:a=si, fi:ra=k! +gu:nleri:nde h!urk!at i:k!ti:z:a=si, baha=r mev\-si:mi:nde s!oh!bet +germi:yyeti:, mah!bu=blar mecli:si:nde s:ara=b keyfi:yyeti:, ca=na=neler +i:bra=mi ve \`a=s:ik!lar i:k!da=mi ve fuz:ala= mus!a=h!abeti: ve \`uk!ala= +i:lti:fa=ti, ehl..i: di:ller rag:beti: ve t!a=li:bler mi:nneti: i:le di:du:gu: +ebya=t ve es:\`a=r, ki: her bi:ri:nu:n= lat!i=f ma\`a=ni=si: ca=m..i naz!ma +s:ara=b..i rengi=n ve s:i=ri=n h=aya=la=ti bezm..i: s!afa=da nuk!l..i: +s:ekkeri=n olup mu\`a=s:i:ra=n..i mecli:s..i: z=evk! bu meyh=a=nenu:n= +ba=deci:si: ve h!ari=fa=n..i bezm..i: s:evk! bu ka=s:a=nenu:n= sebu=-kes:i: +olmis:lardi. K!alem..i: i:\`ti:z=a=r bu h=a=me..i: i:nki:sa=r i:le bu evra=k!a +tah!ri=re i:k!da=m ve bu ecza=ya tast!i=re i:hti:ma=m go:sterdi:. +\EndTurkish +\tenrm +\vfil\eject + +\strut\vskip .75in +\centerline{{\elevenrm Appendix A}} +\smallskip +\centerline{{\elevenrm The {\eleventt turkit.mf} driver file}} +\bigskip +\Beginmft +\input turkit.tex +\Endmft + +\vfil\eject + +\strut\vskip .75in +\centerline{{\elevenrm Appendix B}} +\smallskip +\centerline{{\elevenrm The {\tt aynhmz.mf} file}} +\Beginmft +\input aynhmz.tex +\vfil +\Endmft + + + + + + + + +\bye diff --git a/language/turkish/doc/turkish-hyphens.tex b/language/turkish/doc/turkish-hyphens.tex new file mode 100644 index 0000000000..fd3646c0e3 --- /dev/null +++ b/language/turkish/doc/turkish-hyphens.tex @@ -0,0 +1,305 @@ +%**start of header +\input tugbot.sty +\vol 0, 0. +\issdate ????????, 198x. +\issueseqno=00 +\twocol +%**end of header +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tb20mackay.tex + +\title Turkish Hyphenations for \TeX +\\Pierre A. Mackay +\endx + +\pagexref{mackay} + +Turkish belongs to the class of agglutinative languages, which +means that it expresses syntactic relations between words through +discrete suffixes, each of which conveys a single idea such as +plurality or case in nouns, and plurality, person, tense, voice +or any of the other possibilities in verbs. Since each suffix is +a distinct syllable (occasionally more than one syllable), Turkish +sentences are likely to contain a high proportion of long multi-syllable +words, and to need an efficient system of hyphenation for typesetting. +Owing to the long association of almost every Turkic-language region +with Islam, certain conventions of the language have been deeply +influenced by Arabic orthographic habits, and among these is the +syllabification scheme on which a system of hyphenation is built. + +According to the syllabification pattern of Arabic, a syllable +is assumed always to +consist of an initial consonant (even when that consonant is no longer +written) and to terminate in a vowel {\tt -cv-} or in the next unvowelled +consonant {\tt -cvc-}. This pattern is followed so absolutely that it is +permitted to break up native Turkish suffixes. The plural suffix +\hbox{\it -ler-} will be hyphenated as {\it -le-rine\/} in an environment +where the {\tt -cv-cv-cv} pattern predominates. A syllabic division of +{\it\c cektirilebilecek\/} provides six places for +hyphenation {\it \c cek-ti-ri-le-bi-le-cek}, while a +morphological division of the word would produce only five +{\it \c cek-tir-il-e-bil-ecek}.\footnote{$^*$}{The word is +a future participle, and describes something as being +capable of being extracted at some time in the future\Dash like a tooth.} + +There are almost no exceptions to this pattern. Words which +appear to begin with a vowel, like {\it et-mek}, can also be +described as beginning with the now suppressed half-consonant +{\it hamza}. Widely sanctioned orthographic irregularities like +{\it brak-mak\/} can be found in stricter orthography as {\it b\i-rak-mak}. +The only universally practiced violation of the rule is associated +with the word {\it T\"urk}, in which the {\it -rk-} combination is +inseparable, and contributes to several of +the very few three-consonant clusters +regularly used in the language---{\it T\"urk\c ce}, {\it T\"urkler}. +One other significant consonant cluster occurs in the suffix +{\it [i]m-trak}. + +The Ottoman Texts Project at the University of Washington has +undertaken the development of a set of editing and typesetting +tools for the production of texts in modern Latin-letter Turkish, +using the full range of diacriticals needed for scholarly editions +of historic Arabic-script manuscripts. Because we wish to work +in cooperation with scholars in Turkey, who are most likely to +have access to unmodified versions of \TeX, we have chosen +a font-based adaptation of the \TeX\ environment, which will require +no alterations in the program. The work on fonts is largely complete, +and one of the last major efforts necessary is the creation of +a Turkish hyphenation table. + +The obvious way to create such a table in the \TeX\ environment, is to +run a list of correctly hyphenated words through {\tt Patgen}, but +it is not always easy to find such a list. English and German dictionaries +quite commonly provide hyphenation patterns, but the dictionaries of +the Romance languages rarely do, and in Turkish, the hyphenation pattern +is so obvious that the production of such a list is viewed as an +unimaginable waste of time. Rather than try to scan a Turkish +word-list and supply hyphens, we have taken advantage of the strict formalism +of the patterns and generated the Turkish hyphenation file by +program. + +Turkish orthography uses a very large number of accented characters. +The Latin-letter character set which has been in +use since the orthographic reform of 1928 is extended, even in Modern +Turkish, by means of a considerable number of diacriticals and accents. A +diligent search through the modern dictionary will produce several +five- and six-letter words in which every character is accented, and an +intensive search might come up with words as much as nine letters long +with every character accented. In critical editions of Ottoman texts, +the number of accents more than doubles. Modern Turkish knows only +the accented and unaccented pair of letters `{\bf s}' and `{\bf\c s}', but +Ottoman Turkish has `{\bf s}', `{\bf\c s}', `{\bf\d s}' and `{\bf\b s}', which +represent four completely distinct characters in the Arabic alphabet. +The letter `{\bf h}' shows almost as much variety, and so do several +others. Our Ottoman Turkish font has twenty-seven accent and letter +composites, in addition to the basic twenty-six simple Latin letters. +Moreover, all composites can exist in upper case forms as well as in +lower case. To accommodate these composite characters in the normal +{\ninerm ASCII} character set, +we use an input coding convention in which accented +letters are treated as a class of ligatures, and three characters from the +{\ninerm ASCII} symbol set are borrowed for use as postpositive +pseudo-letters, to trigger the selection of accented letters in +the Turkish fonts. The three symbols are the exclamation +point `{\tt!}', the equals sign `{\tt=}', and the colon `{\tt:}'. + +The choice of these symbols is +based on a proposal made more than ten years ago at the Orientalist +Congress held in Paris, in 1974. Owing to the extraordinary richness +of the Ottoman Turkish character set, it has been necessary to extend +the old proposal, but it still retains the original principles, which +are closely associated with the coding scheme used by the Onomasticon +Arabicum project, which is coordinated at the Centre National de la Recherche +Scientifique in Paris. (The Onomasticon Arabicum uses a post-positive dot +and a post-positive hyphen to indicate diacriticals, which is +acceptable in a data-base of names, but not in continuous prose text.) +The current set of conventions, using (|! = :|), +produces an input file which can, if +necessary, be edited on a ordinary terminal lacking any special +Turkish character features, and which a Turkish speaker can become +accustomed to without too much difficulty. When coupled with a +well-designed macro file and a rewritten hyphenation table, it +provides the possibility of naturalizing a \TeX\ environment into +Turkish without any large investment in special purpose hardware and +rewritten versions of non-standard (non-)\TeX. + +The exclamation point is used for all the ``emphatic'' letters of the +Arabic alphabet (the alphabet in which Turkish was written until 1928). +These are the letters {\it \d Dad\/} (usually pronounced as `{\bf z}' in +Turkish, and hence paired with a non-Arabic letter known as {\it \.Zad\/}), +{\it \d Sad}, {\it \d Ha'}, {\it \d Ta'} and {\it \d Za'}. +The equals sign is used for all the +consonants which are represented in Latin-letter transcriptions by a +letter with a bar under, such as `{\bf\b d}' ({\it dhal\/}), more +commonly written in +Turkish as `{\bf\b z}', and also for vowels with a macron or, following the +Turkish convention, a `hat' accent, and similar forms, chosen like the +cupped `{\bf\u g}', because the equals sign is visually closer than the colon +is. (Moreover, the colon is needed for a different variety of the +letter `{\bf g}'.) The colon is a catch-all for everything else, but works +out rather well visually, as it happens. The three post-positives are +not accents, but regular characters, which use the \TeX\ convention of +ligatures to invoke accented characters from the font, just as the +second `{\bf f$\,$}' in the normal \TeX\ `{\bf ff$\,$}' +ligature pair does. If a standard +Latin-letter character does not have an associated ligature table in +the font, a following diacritical postpositive will be unaffected. +Thus, the letter `{\bf o}', +when followed by a colon will produce `{\bf\"o}', but the letter `{\bf e}' when +followed by a colon will produce `{\bf e:}'. The equals sign retains +its normal function in math mode because the math font {\tt TFM} files +do not call it into ligature pairings, and the colon and exclamation point +can be invoked by the command sequences {\tt\bs:} and {\tt\bs bang} +when the simple character will not work. + +Since the hyphenation evaluation loop in \TeX\ dismantles all ligatures +before it looks for acceptable hyphenation positions, it will have +to accept the post-positive symbols (|! = :|) as part of the alphabet, +so each of these symbols receives its own value as an |\lccode|. +The full Turkish-\TeX\ alphabet is: + +{\advance\baselineskip by 3pt +\obeylines +a \^a e \i\ i \^\i\ o \"o \^o u \"u +` ' b c d f g h j k l m n p r s t v y z +\d d \d h \d k \d s \d t \d z +\b d \u g \b h \~n \b s \b t \b z +\c c \.g \c s \.z +\par } +\smallskip +In the hyphenation loop of \TeX, these characters resolve into +the set: + +{\advance\baselineskip by 3pt +\obeylines +|! = : @ # a b c d e f g h i| +|j k l m n o p r s t u v y z| +\par } +\smallskip +\noindent and it is this latter set only which will appear in the +hyphenation patterns. The dotted {\tt i} in the above list really +stands for the Turkish undotted `{\bf\i}'. The input code convention +for Turkish uses {\tt i:} for the Turkish `{\bf i}'. The {\tt @} +sign stands for the Arabic letter {\it hamza} and the {\tt \#} +stands for {\it `\kern-1.5pt ayn}. To avoid conflict with +{\tt plain.tex} uses of these two characters, they appear explicitly +only in the hyphenation pattern file. Turkish text input uses +|\`| to generate |\char'43| ({\it `\kern-1.5pt ayn}) and |\'| +to generate |\char'100| ({\it hamza}). + +We begin constructing the table by considering the pseudo-letters +(|! = :|). Since these are used exclusively in ligature pairs, +no hyphenation is ever permissible between them and the preceding +letter. Odd values permit, and even values in the hyphenation +code prohibit hyphenation, +so we give the highest possible even value (8) to the region +preceding each pseudo-letter. The pseudo-letters can follow +both vowels and consonants, so hyphenation will often, but not +always, be possible after them. We give that region the lowest +possible odd value (1) to show that hyphens are permitted here. +\smallskip +\centerline{\tt 8!1 8=1 8:1} +\smallskip + +In strict orthography, a vowel cannot be separated from the +preceding consonant, and the few apparent instances of hyphenation +between two adjacent vowels (suppressed consonant) can be treated later. +In all normal instances a vowel cannot accept a hyphen in the +preceding region and will probably accept one in the following region, +so the vowels are set thus. +\smallskip +\centerline{\tt 2a1 2e1 2i1 2o1 2u1} +\smallskip + +A consonant may begin a {\tt -cv-} sequence or end a {\tt -cvc-} sequence, +so we give it a 1 on either side: +\smallskip +\centerline{\tt 1b1 $\;\ldots\;$ 1z1} +\smallskip + +This simple lot of patterns will provide for all normal {\tt -cv-} +instances such as +\smallskip +\centerline{\tt1h1\ \ \ \ } %seven elements +\centerline{\tt\ \ 8=1\ \ } +\centerline{\tt\ \ \ \ 2a1} +\centerline{\tt1h8=2a1} +\smallskip +\noindent which will result in the sequence {\tt-h=a-}, with hyphens fore +and aft. + +The next group of patterns controls hyphenation at the end +of words. \TeX\ will usually not break off two-letter fragments +in its hyphenation loop, but owing to the nature of the input coding +we have chosen, it may see a three- or four-letter sequence where +a two-letter result is intended. We do not want to find +{\it l\"u}, {\it\c c\"u\/} and {\it si\/} isolated at the beginning +of a line, nor do we really want the {\it cek\/} of {\it -ecek\/} +broken off if it is at the end of a word. To prevent hyphenations of +this sort, the program generates all possible patterns of the type: +\smallskip +\centerline{|2ba=.| $\;\ldots\;$ |2z:u:.|} +\smallskip +\noindent using the conventional |.| for end-of-word. +The resultant list includes sequences that are phonetically impossible in +Turkish but these take up so little additional space in the file that +they can be left there. The pattern |2e2cek.|\kern -1.5pt is added as a special case. + +The break after {\tt -cvc-} syllables is almost taken care of: +\smallskip +\centerline{\tt1h1\ \ \ \ } %seven elements +\centerline{\tt\ \ 8=1\ \ } +\centerline{\tt\ \ \ \ 1h1} +\centerline{\tt1h8=1h1} +\smallskip +\noindent but it makes the thoroughly undesirable {\tt -cv-ccv-} +sequence as acceptable as the correct {\tt -cvc-cv-} sequence. +To prevent this error, all possible Turkish +two-consonant sequences (e.g.\ {\tt h=h=}${}\rightarrow{}$`{\bf\b h\b h}') +are covered by patterns such as {\tt2h=h=}, in which the value 2 +will override the 1 after the preceding vowel. + +The few undesirable hyphenations at the beginning of +words which appear to start with a vowel are prevented +by generating the patterns +|.a=2| through |.u:2| and +similarly, the few instances where an apparent {\tt -cv-v-} hyphenation +stands for {\tt -cv-[c]v-} can be allowed by adding the full range of patterns +|a3a2| through |u:3u:2| which includes a large number of impossible +pairings. + + +The last patterns to be added are |m1t4ra4k| and |t2u8:2r4k1|. At the price of +slightly excessive strictness (the prohibition against the {\tt r-k} +division is only valid when the word begins with an upper-case {\tt T}) +we can ensure that {\it T\"urk\/} always stays in one piece. + +Files of this sort, when generated by program, tend to be +larger than hand-worked files, but if it seems that +all the redundancies mentioned above might +be seriously wasteful of space, consider the following statistics: +\smallskip +\settabs 4 \columns +{\advance\baselineskip by 3pt +\+&\hfil{}Entries\hfil&\hfil{}Trie size\hfil&\hfil{}Ops\hfil\cr +\+\quad English&\hfil4460\hfil&\hfil5492\hfil&\hfil181\hfil\cr +\+\quad Turkish&\hfil1840\hfil&\hfil\hphantom{0}616\hfil&\hfil\hphantom{0}16\hfil\cr +}\smallskip + +The format file that makes use of this set of patterns will no +longer serve very well for English language \TeX. The font-based +solution to foreign-language typesetting is definitely monolingual, +since only one {\tt hyphen.tex} file can be read in at a time. +A multilingual system, good for both English and Turkish, would +require modifications of the program code. +This simple solution, however, will be quite satisfactory in a +purely Turkish environment, and can be made even more successful +by taking the {\tt tex.pool} file and translating it all into +Turkish. + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\bye + + diff --git a/language/turkish/hyphen/turk_hyf.c b/language/turkish/hyphen/turk_hyf.c new file mode 100644 index 0000000000..1f3526a869 --- /dev/null +++ b/language/turkish/hyphen/turk_hyf.c @@ -0,0 +1,84 @@ +/**************************************************************************** + * * + * turk_hyf.c -- a program to produce PatGen-like hyphenation * + * patterns for the Turkish Language. * + * * + * Copyright 1987, by Pierre A. MacKay. * + * This program and the resulting pattern file may be used * + * freely by non-profit institutions. Commercial users intending * + * sale of any product incorporating this file should communicate * + * with the author at the Humanities and Arts Computing Center * + * Mail-Stop DW-10 * + * University of Washington * + * Seattle, Washington 98105 * + * * + ****************************************************************************/ +#include <strings.h> + +static char *tk_vowel[]= + {"a", "a=", "e", "i", "i=", "i:", + "o", "o=", "o:", "u", "u:"}; +static char *tk_cons[]= + {"@", "#", "b", "c", "c:", "d", "d!", "d=", "f", + "g", "g=", "g:", "h", "h!", "h=", "j", "k", "k!", + "l", "m", "n", "n=", "p", "r", "s", "s!", "s=", "s:", + "t", "t!", "t=", "v", "y", "z", "z!", "z=", "z:"}; + +int i,j; + +main() +{ + printf("%% A mechanically generated Turkish Hyphenation table for TeX,\n"); + printf("%% using the University of Washington diacritical coding\n"); + printf("%% developed by P. A. MacKay for the Ottoman Texts Project.\n"); + +/* make # a letter for now */ + printf("\\catcode`\\#=11\n"); + +/* prohibit hyphen before pseudo-letters + and allow it after */ + printf("\\patterns{%\n8!1\n8=1\n8:1\n"); + +/* prohibit hyphen before vowels, allow after */ + for (i=0; i<(sizeof tk_vowel / sizeof &tk_vowel[0]); i++ ) + if (strlen(tk_vowel[i])==1) printf("2%s1\n",tk_vowel[i]); + +/* allow hyphen either side of simple consonants */ + for (i=0; i<(sizeof tk_cons / sizeof &tk_cons[0]); i++ ) + if (strlen(tk_cons[i])==1) printf("1%s1\n",tk_cons[i]); + +/* prohibit hyphen before disguised two-letter fragments */ + for (i=0; i<(sizeof tk_cons / sizeof &tk_cons[0]); i++ ) + for (j=0; j<(sizeof tk_vowel / sizeof &tk_cons[0]); j++ ) + if ((strlen(tk_cons[i]) + strlen(tk_vowel[j]))>2) + printf("2%s%s.\n",tk_cons[i], tk_vowel[j]); + +/* prevent e-cek at end of word */ + printf("2e2cek.\n"); + +/* prohibit hyphen before pair of consonants---many + pairs generated here are impossible anyway */ + for (i=0; i<(sizeof tk_cons / sizeof &tk_cons[0]); i++ ) + for (j=0; j<(sizeof tk_cons / sizeof &tk_cons[0]); j++ ) + printf("2%s%s\n",tk_cons[i], tk_cons[j]); + +/* allow hyphen between vowels, but not after second vowel of + pair---several phonetically impossible pairs here */ + for (i=0; i<(sizeof tk_vowel / sizeof &tk_cons[0]); i++ ) + for (j=0; j<(sizeof tk_vowel / sizeof &tk_cons[0]); j++ ) + printf("%s3%s2\n",tk_vowel[i], tk_vowel[j]); + +/* prohibit hyphen after disguised single vowels + at start of word */ + for (i=0; i<(sizeof tk_vowel / sizeof &tk_vowel[0]); i++ ) + if (strlen(tk_vowel[i])>1) printf(".%s2\n",tk_vowel[i]); + +/* a couple of consonant-clusters */ + printf("tu4r4k\nm1t4rak\n"); + +/* terminate the patterns. */ + printf("}\n"); + +/* restore # as parameter symbol */ + printf("\\catcode`\\#=6"); +} diff --git a/language/turkish/inputs/sample.tex b/language/turkish/inputs/sample.tex new file mode 100644 index 0000000000..14bca89a6f --- /dev/null +++ b/language/turkish/inputs/sample.tex @@ -0,0 +1,497 @@ +% Copyright 1986 by Walter Andrews, University of Washington. +% This input file is provided as a test of the Turkish fonts +% and is not for publication. + +% \input tkccode % may be needed if unfiltered Turkish input is used +\font\tk=wtkr10 +\font\ti=wtkti10 +\hsize=4.5in\vsize=7in +\def\beginprose{\endmode + \begingroup\smallskip\def\endmode{\par\endgroup}} +\def\beginverse{\endmode + \begingroup\obeylines\def\endmode{\par\endgroup}} +\let\endmode=\par +\def\beyt{\beginverse\getverse} +{\obeylines\gdef\getverse #1 + #2 + {#1\gdef\style{#2}% + \bgroup\bigskip\leftskip=4pc\parindent=0pc\raggedright#2 + \def\endmode{\egroup\endgroup}}} +\def\nathr{\beginprose\goodbreak\bigskip\noindent Nes=r\par\nobreak} +\def\dua{\beginprose\goodbreak\noindent} + +\sfcode`\:=1000 \sfcode`\!=1000 \sfcode`\==1000 % Frenchspacing after +% these + + +\tk +\centerline{DI=BA=CE} +\vskip.5in +\noindent +H!amd..i: na=-mah!du=d ve s=ena=..yi na=-ma\`du=d +H!az:ret..i: \`I:zzete ki: mu:bdi:\`..i: ma=hi:y\-ya=t ve muh=teri:\`..i: +\`ak!l u h!aya=tdur celle cela=lehu ve \`amme neva=lehu. + +\beyt + Beyt + I:ri:s:mez \`ak!l..i ka=mi:l h!i:kmeti:ne + Yeti:s:mez ki:mse anun= k!udreti:ne + + +\nathr +Zi:hi= H=a=lik! ki: zu:mre..i: i:nsa=ni es:ref..i: mah=lu=k!a=t +i:du:p \`akl..i reh-nu:ma=yi ve fi:kr..i: ci:ha=n-a=ra=yi z=i:hn..i: +seli=m ve t!ab\`..i mu:stak!i=m i:le nut!k!..i fas!i=h! ve kela=m..i +s!ah!i=h! erza=ni= go:ru:p ve faz:z:alna=hu:m \`ala= kes=i=ri:n mi:mmen +h=alak!na= tafz:i=la= s:erefi:yle mug:tenem buyurdi. + +\beyt + Beyt + Di:la= \`a=ci:z durur medh!i:nde i:dra=k + K!ac:an vas!f i:der ani bi:r avuc: h=a=k + +\nathr +Zi:hi= K!a=di:r ki: fes!a=h!at meyda=ninun= c:a=bu:k-su:va=rlarina +ni:ya=m..i deha=ndan ti=g:..i: a=bda=r..i zeba=n vi:ru:p mu:lk..i: naz!m +u Nes=ri: an=lara mu:sah=h=ar i:tdi:. + +\beyt + Beyt + Ne ulu pa=di:s:a=h olur o Su:bh!a=n + Ki:m anun= bi:r k!ulidur Mis!ra sult!a=n + +\dua +{\ti h=allada'lla=hu mu:lkehu ve ebbede salt!anatahu i:la= +ebedi:'d-du:hu=ri: ve'l-ezma=n.} + + +\nathr +Zi:hi= mu:tekelli:m ki: bela=g:at s:ekeri:sta=ninun= +t!u=t!i=leri:n a=yi=ne..i: efka=r i:le gu=ya= i:du:p +s:ekkeri=n-gu:fta=r i:tdi:. + +\beyt + Beyt + Zeba=n bi:r t!u=t!i=..i: s:i=ri=n-suh=endu:r + Di:l a=yi=ne k!afes an=a dehendu:r + +\nathr +Zi:hi= ka=s:i:f ki: g:ayb mestu=releri:nu:n= perde-gu:s:a=lig:in +dest..i: i:lha=m i:le a=sa=n i:du:p mu:s:a=hedesi:n +di=de..i: du=rbi=ne mu:yesser k!ildi. + +\beyt + Beyt + K!amer h!u:sni:ni: k!ilmis:dur mu:retteb + Hi:la=li: an=a i:tmi:s: t!avk!..i g:abg:ab + +\nathr +Zi:hi= \`a=li:m ki: debi=ri:sta=n..i \`i:rfa=nda ta\`li=m u: i:rs:a=d i:le +t!ifl..i nev-a=mu=z k!ilup h=ava=t!ir..i i:nsa=ni, ki: h=ula=sa..i: +a=feri=ni:s:du:r, gu:li:sta=n..i faz:l u da=ni:s: k!ildi. Ve heza=r-da=sta=n..i +zeba=ni bu=sta=n-sera=y..i deha=nda h!amd u: s=ena=siyle gu=ya= i:du:p +ag:s!a=n..i beya=nda da=sta=n..i teba=reka'lla=hu ah!senu'l-h=a=lik!i=n +okindi. + +\beyt + Beyt + K!udreti: k!as!ri i:c:i:nde c:arh= bi:r ka=s:a=nedu:r + \`Ak!l..i ka=mi:l \`i:lmi: i:c:re t!ifl..i mekteb-h=a=nedu:r + +\nathr +Zi:hi= rah!i=m ki: i:sti:h!ka=m..i esa=s..i mu:lk u: mi:llet ve esba=b..i farz: +u su:nnet i:c:u:n enbi:ya= ve ru:su:le s:em\`..i: nu:bu:vvet ve c:era=g:..i +ri:sa=let mu:yesser i:du:p enva=r..i i:rs:a=dlariyle gu:m-ra=ha=n..i +ba=di:ye..i: d!ala=let ve peyreva=n..i ka=rba=n..i z!ulema=t..i ceha=lete deli=l +oldilar. H=us!u=s!a= h={\ti a=\/}ce..i: \`a=lem ve muk!teda=..yi evla=d..i +a=dem, mu:fti=..i: h=it!t!a..i: meleku=t, mu:nhi=..i: \`a=lem..i: +ceberu=t, \`andeli=b..i: gu:li:sta=n..i ve ma= yant!ik!u \`ani:'l-heva= ve +t!u=t!i=..i: s:ekeri:sta=n..i i:n huve i:lla= vah!yun yu=h!a= Muh!ammed +Mus!t!afa= s!alava=ta'lla=hu \`aleyhi: ve \`ala= a=li:hi: ma= +da=metu:'l-\`arz:u ve's-sema= + +\beyt + Mes=nevi= + H!abi=b..i: H!ak! mu\`i=n..i: h=alk!..i \`a=lem + Gu:zi=n..i: enbi:ya= vu: fah=r..i: A=dem + Mu\`anber s!ac:lari anun= s:eb..i: K!adr + Mu:nevver ruh=lari anun= meh..i: bedr + Degu:ldu:r kehkes:a=n germ olup efla=k + Anun= s:evk!inden i:tmi:s: yak!asin c:a=k + Ri:ya=z:etde an=a olmag:a hem-reng + K!omis: H!a=tem k!us:ag:i i:c:i:ne seng + Sara=yi menzi:l..i: Ru=h!u:'l-Emi=ndu:r + Vu:cu=di rah!meten li:'l-\`a=lemi=ndu:r + I:ki: \`a=lemde oldur k!urretu:'l-\`ayn + T!ufeyli: k!as:larinun= k!a=be k!avseyn + Seri=r..i: \`ars:a na\`leyni: durur ta=c + Emi=n..i: vah!y u s!a=h!i:b-sirr..i mi:\`ra=c + Ci:ha=n ki:m tes:neli:kden ola bi=-ta=b + Ak!ida lu=le..i: si=mi=nleri: a=b + Ne mu\`ci:zdu:r o si=mi=n h=a=meye bak! + Ki: ma=hun= na=h=uninda eyledi: s:ak! + Go:n=u:l yok! mu\`ci:za=tina ni:ha=yet + Anun= na\`ti:nde olmaz so:ze g:a=yet + Odur c:u:n H!ak! yaninda z=a=t..i ekrem + Gerek so:z muh=tas!ar va'lla=hi: a\`lem + +\nathr +Zi:hi= mu:debbi:r te\'ki=d..i: umu=r..i mes!a=li:h!..i: \`a=lem ve te\'yi=d..i: +mu:hi:mma=t..i beni= \`adem i:c:u:n mu:lu=k..i: di=nda=r ve sela=t!i=n..i: +z=evi='l..i:kti:da=ri ki: ta=c..i i:bti:ha=c..i es-sult!a=n z!illu'lla=h i:le +mu\`alla= ve ser-efra=z ve h=il\`at..i: ri:f\`at..i: ve u:lu:'l-emru: +mi:nku:m i:le muh!alla= ve mu:mta=z i:du:p sema=\'..i: devletleri:nde +a=fi:ta=b..i \`adl seyya=re ve felek..i: h!as:metleri:nde k!amer-va=r devva=r +olup \`a=lem sa=ye..i: hi:ma=yetleri:nde a=su=de-h!a=l ve h=alk! ketf..i: +\`a=t!ifetleri:nde mu:reffehu:'l-ah!va=l olmis:lardur. Si:yyema= h!az:ret..i: +salt!anat-pena=hi= ve h=ila=fet-destga=hi= ki:, s!ah!i=fe..i: h=a=t!ir..i +s:eri=fleri: mah!all..i: nu:k!u=s:..i h!ak!a=yik! ve levh!..i: z:ami=r..i: +mu:ni=rleri: mehbit!..i enva=r..i dek!a=yik! ve derya=..yi t!ab\`..i +gevher-efs:a=nlari mah=zen..i: esra=r..i I:la=hi= ve z=i:hn..i: vek!k!a=d..i +du:r-efs:a=nlari mevri:d..i: let!a=yi:f..i: na=-mu:tena=hi=du:r, da=yi:ma= +\`ahd..i: s:eri=fi:nde \`uk!u=d..i s:er\` muntaz!am ve her dem \`as!r..i +mu:ni=fi:nde cu:nu=d..i fisk! mu:nhezi:m. + +\beyt + Beyt + G:ibt!a eyler t!a=\`ati:nu:n= yi:ri:ne Da=ru:'ssela=m + Zu:hdi: s!ah!ra=si olupdur menzi:l..i: Ru=h!u:'lemi=n + +\nathr +Bi:r gerdu=n..i:k!ti:da=rdur ki: a=fi:ta=b..i \`a=lem-ta=b h!u:km..i: +sat!veti:ne t!ug:ra=..yi s:ehri:ya=ri= ve bi:r refi=\`-mi:k!da=rdur ki: +felek..i: pu:r-encu:m defter..i: \`az!ameti:ne ci:ld..i: s!adefka=ri=du:r. + +\beyt + Beyt + Hey ne \`a=li= s:a=h olur ol h=usrev..i: \`a=li=-cena=b + K'i:s:i:gi:nde altun u:sku:flu: k!ulidur a=fi:ta=b + +\nathr +Es-sult!a=n i:bnu:'s-sulta=n i:bnu:'s-sult!a=n i:bnu:'s-sult!a=n Seli=m +H=a=n i:bnu:'s-sult!a=n Ba=yezi=d bi:n sult!a=n Meh!emmed bi:n Mura=d H=a=n +h=allada'lla=hu mu:lkehu ve ebbede salt!anatahu i:la= ebedi:'d-du:hu=ri: +ve'l-ezma=nun= eyya=m..i hu:ma=yu=n ve ru=zga=r..i meymu=nlarinda ehl..i: +\`i:lme zi:ya=de \`i:zzet ve s!a=h!i:b..i: faz:la tama=m rag:bet olup s:i:\`r +u: i:ns:a= ve naz!m..i di:l-gu:s:a=ya i:lti:fa=t..i s:a=ha=ne ve +i:\`ti:ba=ra=t..i pa=di:s:a=ha=ne olinurdi. Ol ci:hetden erba=b..i +k!ara=yih!..i seli=m ve as!h!a=b..i t!aba=yi\`..i mu:stak!i=m g:avva=s!lik!lar +i:du:p fi:ki:r derya=sindan c:ik!arduk!lari du:rr..i: s:a=hva=rdan so:z +\`aru=sina gu=s:va=r i:derlerdi: ve suh=envera=n..i ci:ha=n ve +nu:kte-perda=za=n..i zama=n s!arra=flik!lar i:du:p me\`a=di:n..i: mak!a=lden +ceva=hi:r..i: h=aya=l getu:ru:p ebka=r..i efka=run= sa=\`i:dleri:ne mu:cevher +si:va=rlar du:zerlerddi:. Her ga=h ki: muh=addera=t..i t!abi=\`at ve +\`ara=yi:s..i: efka=r sera=-perde..i: bela=g:at ve tu:tu:k..i: fes!a=h!atden +ki:lk..i: h=aya=l..i: dak!i=k! ve h!ulel..i: ma\`a=ni=..i: rak!i=k! i:le +muh!alla= ve mu:zeyyen k!ilinup manz!ara..i: t!a=k!..i tema=s:a=ga=hda +ci:lveler i:du:p h!u:sn..i: behcet..i: di:l-gu:s:a= ve h!u:sn..i: cema=l..i: +ci:ha=n-a=ra= i:le \`us:s:a=k!i h!ayra=n ve u:fta=deleri: ser-gerda=n +i:derlerdi:. + +\beyt + Beyt + Yu:ri: \`a=s:ik! naz!ar eyle bu k!as!r..i gu:ls:en-a=ra=ya + Gu:zeller seyri:n i:stersen= gel i:mdi: sen tema=s:a=ya + +\nathr +Ve ebka=r..i efka=r mu:s:ki=n k!aba=lar geyu:p Meryem-a=sa= ci:lvega=h..i +\`i:zz u: na=z ve gu:lges:t..i: i:\`za=zda h=ira=ma=n ve ga=h s:a=hi:d..i: +es:\`a=r mu:zellef mah!bu=blar gi:bi: ma\`na=..yi rengi=ni: zi=net..i: +ruh=sa=r i:du:p seyra=nga=h..i h=ava=t!irda s!adr-ni:s:i=n olmis:lardi. + +\beyt + Naz!m + Ne na=zu:kdu:r bu zi=ba= di:lru:ba=lar + T!onanmis:lar geyu:p rengi=n k!aba=lar + Bularun= h!u:sni: c:avlanmis: irak!dan + Ki: \`a=lem h=alk!i \`a=s:ik!dur k!ulak!dan + +\nathr +I:dra=k meh!a=fi:li:nu:n= s!adr-ni:s:i=nleri: +vi: i:z=\`a=n meca=mi:\`i:nu:n= pa=k u: gu:zi=nleri: bunlarun= h!u:sn u: +cema=li:ne h!ayra=n ve na=z u ki:ri:s:meleri:ne va=li:h u: ser-gerda=n +olmis:lardi. + +\beyt + Beyt + H=a=llerdu:r so:z \`aru=sinun= yu:zi:nde zeyn i:c:u:n + Nok!t!alar s!anman= ki: du:s:mi:s:du:r h=at!..i es:\`a=rda + +\nathr +S:evk! meyh=a=nesi:nu:n= ba=de-nu=s:lari ve z=evk! h=umh=a=nesi:nu:n= +mey-fu:ru=s:lari sebu=..yi es:\`a=r ve k!ira=be..i: gu:fta=rdan mu:da=m +s:ara=b..i h=aya=l i:le def\`..i: mela=l i:derlerdi:. + +\beyt + Beyt + Ne sa=g:ardur k'anun= yok! i:nki:sa=ri + Ne meydu:r k'ol anun= olmaz h=uma=ri + +\nathr +Kela=m ba=g:inun= bu:lbu:l..i: gu=ya=lari ve naz!m gu:li:sta=ninun= murg:..i: +h=o=s:-neva=lari gu:lbu:n..i: gu:li:sta=n..i \`i:ba=ra=t ve g:onca..i: +baha=ri:sta=n..i i:sti:\`a=ra=tdan su\-h=en-sa=z ve nag:me-perda=z olmis:lardi. + +\beyt + Beyt + Ne gu:ls:endu:r k'anun= yok!dur h=aza=ni + Ne gu:ldu:r ol k'anun= c:ok!dur zama=ni + +\nathr +S!ah!a=yif..i evra=k!..i h=ava=t!ir..i da=na=ya=n ve defa=ti:r..i: ecza=..yi +z!ama=yi:r..i: g:azel-sera=ya=n naz!m..i di:l-gu:s:a= i:le mektu=b u +muh!as:s:a= olmis:dur. + +\beyt + Beyt + Ok!inan mecli:sler i:c:re s:i:\`r..i: gevherba=rdur + Her go:n=u:l gu=ya= ki: bi:r mecmu=\`a..i: es:\`a=rdr + +\nathr +Ol sebebden nak!k!a=s:..i nak!s:bend..i: es:\`a=r ve ressa=m..i beyt..i: +a=bda=r, ki: nak!s:inda Ma=ni= h!ayra=n ve resmi:nde Erjeng +ser-gerda=ndur, ya\`ni= gi:ri:h-gu:s:a=..yi fi:kr..i: \`ami=k! ve +s:emme-gu:da=z=..i z:ami=r..i: dak!i=k! nak!s: u ni:ga=r i:le her mat!la\`i +g:ayret..i: h=uld..i: beri=n ve her beyti: res:k..i: ni:ga=rh=a=ne..i: C:i=n +k!ilmis:dur. + +\beyt + Beyt + Beytu:mu:n= her ki:m naz!ar i:tse i:c:i:ne t!as:s:ina + Di:r heza=ra=n a=feri=n tah!si=n anun= nak!k!a=s:ina + +\nathr +T!u=t!i=..i: h=a=me..i: du:-zeba=n ve bu:lbu:l..i: gu:li:sta=n..i beya=n +g:ulg:ule..i: \`is:k!-engi=z ve velvele..i: s:evk!-a=mi=zi: bu k!afes..i: +a=benu=s..i efla=k ve bu gu:ls:en..i: zu:mu:rru:di=n..i: h=a=k u:zre +s!alup, a=va=ze..i: s:i:\`r..i: bu:lend-pa=ye ve s!ada=..yi naz!m..i +refi=\`-pi=ra=yeden mesa=mi:\`..i: gu=s:e-ni:s:i=na=n..i ku=y..i mah!abbet ve +gu=s:..i hu=s:..i mu:ca=vi:ra=n..i s:ehr..i: meveddet memlu= olup nag:ama=t..i +\`is:k! ve terennu:ma=t..i a=s:ik!i= bi:le t!a=s..i felek pu:r-t!ani=n i:di:. + +\beyt + Beyt + Felek bi:r c:engi=du:r so:zdu:r s!ada=si + Ne rag:bet c:enge olmasa neva=si + +\nathr +Ci:ha=n s!arra=flari naz!m cevheri:ne t!a=li:b ve devra=n h={\ti a=\/}celeri: +meta=\`..i s:i:\`ru:me ra=g:ib olup da=yi:m terti=b..i: di=va=n ve her dem +tah!ri=r..i: es:\`ar..i peri=s:a=n olmag:a h!u:sn..i: i:k!da=m ve kema=l..i: +i:hti:ma=m go:steru:rlerdi:. Eks=eri:yya= mah!bu=blar na=me..i: es:\`a=rumi +g:onca..i: zanbak! gi:bi: a=ra=yi:s:..i: desta=r ve \`a=s:ik!lar t!o=ma=r..i +gu:fta=ruma h!ama=yi:l gi:bi: i:\`ti:ba=r i:derlerdi:. Amma= h=a=t!ir..i +fa=t!irda ol ni:yyet ve z:ami=r..i: k!a=s!irda ol \`azi=met yog: i:di: ki:m +du:s:en es:\`a=r ve va=k!i:\` olan gu:fta=r seva=ddan beya=z:a +go:tu:ru:leydi:, eks=er du:s:en k!as!a=yi:d memdu=h!a va=s!il olmag: i:c:u:n +tah!ri=r ve s!a=dir olan es:\`a=r ca=na=nelere i:rsa=l olmag: i:c:u:n +tast!i=r olinurdi. I:tti:fa=k! s:ol eyya=mda ki: di:l..i: a=s:u:fte-h!a=l u: +peri=s:a=n-ah!va=l mu:ca=vi:r..i: Ka\`be..i: ku=y..i ya=r ve za=yi:r..i: +h=aremh=a=ne..i: di:lda=r olmak!dan fera=g:at eyleyu:p \`azm..i: beytu'lla=h +ve sefer..i: Ka\`be..i: s:eri=fe s:errefeha='lla=hu ni:yyet ve \`azi=met +go:stermi:s:di:. + +\beyt + Mes=nevi= + Nedu:r ol s:a=n..i a\`z!am z=a=t..i ekrem + Ki: olupdur zi:ya=retga=h..i \`a=lem + Ya za=hi:ddu:r ki: olmis:dur si:yeh-pu=s: + Go:ren ani i:der derya= gi:bi: cu=s: + \`Aru=s..i dehr anun=la buldi zi=ver + \`I:z=a=rinda budur h=a=l..i: mu\`anber + Ci:ha=nda \`i:zzeti: c:ok! k!adri: \`a=li= + Cema=li:n go:rmege \`a=lem s!afa=li + Hi:la=l olmis:dur an=a h!alk!a..i: der + K!apusinda gu:nes: bi:r s:emse..i: zer + +\nathr +As!h!a=b..i pu:r-s!afa= ve ah!ba=b..i bi=-ri:ya= bu bende..i: h!ak!i=r ve bu +\`abd..i: fak!i=ri: muh!i:b-neva=zlik! eyleyu:p mu:sa=feret i:c:u:n gu=s:e..i: +gu:lza=r ve bi:r di:l-gu:s:a= merg:za=ra i:ledu:p ezha=r..i nevbaha=r..i +pu:r-su:ru=rdan nu=ru:n \`ala= nu=r sirri z!uhu=r bulmis:di ve +su:nbu:lza=r Ka\`be..i: gu:lza=ra perdeda=r olup mena=r..i s:a=h=dan +bela=bi:l..i: mu:\'ez=z=i:na=n..i h=u=b-a=va=z gi:bi: ser-a=g:a=z i:du:p +di:l..i: muk!i=ma=n ve h=a=t!ir..i mu\`teki:fa=n s!ada=..yi di:l-gu:s:a= ve +neva=..yi ca=n-feza=sindan mesru=r u s:a=da=n olmis:lardi. La=leza=r Mu:nye +ba=za=ri gi:bi: \`ak!i=k!..i rengi=n ve merca=n..i s=emi=nden zi=b u: zi=net +bulmis:di. Mis!ra gu:lza=r ve Ni=le cu=yba=r ve S:a=ma benefs:eza=r +ben=zeyu:p k!ulu=b..i as!h!a=b ve h=ava=t!ir..i ah!ba=b bu tema=s:a=dan +mesru=r ve bu seyra=ndan pu:r-h!uz:u=r olup ebya=t u es:\`a=r ok!inmag:a +i:s:\`a=r olindi. I:tti:fa=k! s!oh!betde s:a=ri:b..i: s:ara=b..i cennet ve +\`ayya=s:..i bezmga=h..i mag:fi:ret mag:fu=r u merh!u=m..i ki:ra=mi= +H!az:ret..i: Mevla=na= Ca=mi= nevvera'lla=he merk!adehunun= di=va=n..i +tama=mi bulinup ya=ra=n tefe\'\'u:l i:tdu:kden s!on=ra bendeye bu mat!la\`..i +s:i=ri=n-mak!a=l h!asb..i: h!a=l va=k!i\` oldi: + +\beyt + Beyt + Key bu:ved ya= Rab ki: ru=-der-Yes=ri:b u: Bat!h!a= ku:nem + Geh be-Mekke menzi:l u: geh der-Medi=ne ca= ku:nem + +\nathr +Ya=ra=n bu sirra h!ayra=n k!alup ``Bi:-\`avni:'lla=hi: Meli:ki:'l-Menna=n bu +sefer..i: sa\`a=det-enca=m ve bu mu:sa=feret..i: \`i:zzet-ferca=m, ki: +fi:'l-h!ak!i=k!a \`i:na=yet..i: I:la=hi= ve h!i:ma=yet..i: +na=-mu:tena=hi=du:r, si:zlere ve cemi=\`..i: k!arindas:lara mu:yesser ve +muk!adder olmis: ola ki: mut!a=bik!..i ni:yyet ve muva=fik!..i \`azi=mi:t +va=k!i:\` oldi'' di:yu: kera=mete h!aml i:tdi:ler. Alla=hu:mme yessi:r +reca=..yi va=ci:b du\`a=..yi vi:rd..i: zeba=n ve z=i:kr..i: li:sa=n +kilindi. Ya=ra=n dah=i: muh=li:sleri:n bu s:evk!den pu:r-su:ru=r go:ru:p +yi:ne i:k!da=m u i:bra=m go:sterdi:ler ki: peri=s:a=n so:zleru:m tah!ri=r ve +na=-merbu=t! keli:ma=tum tast!i=r olina. + +\beyt + Mes=nevi= + S:u den=lu: eyledi: i:bra=mi ya=ra=n + Ki: oldum ben bu i:s:de mest u: h!ayra=n + Go:n=u:l gerc:i: degu:ldu:r bun=a k!a=di:r + Di:lemez buni ki:m i:nci:ne h=a=t!ir + Ki:s:i: k!urtulmak! olur bendeli:kden + Veli= k!urtulimaz s:ermendeli:kden + +\nathr +Bu h!ak!i=r dah=i: anlarun= ceva=binda ``Bu emre i:mti:s=a=l olinurdi li=k +si:z s!a=h!i:b-kema=lleru:n naz!arinda hema=n Mis!ra s:eker ve \`Adene +gevher ve Hi:nde \`anber ve H=utene mu:s:k..i: ezfer ve Yemene \`ak!i=k!..i +k!iymetda=r ve Bedah=s:a=na la\`l..i: a=bda=r i:letmek gi:bi:du:r, bunun= +gi:bi: ti:ca=retden ki:s:i:ye ne fa=yi:de'' di:ni:ldu:kde anlar dah=i: +zi:ya=de lut!f u k!abu=l go:steru:p ``Cevher k!iymetden ve k!uma=s: baha=dan +k!almaz, bu \`o:z=r degu:ldu:r belki: ta\`allu:ldu:r, +i:ns:a='lla=hu'l-e\`azzu: mu:la=k!a=t mu:yesser olinca ya=ra=na eglencedu:r'' +di:yu: yi:ne i:bra=m..i bi=-ni:ha=ye ve i:k!da=m..i bi=-g:a=ye go:sterdi:ler. +Eyle olsa el..i:bra=m muh!as!s!ilu'l-mera=m muk!tez:a=sinca anlarun= +h=a=t!ir..i \`a=t!irlari, ki: mi:\`ya=r..i nak!d..i: kela=mdur, muh=a=lefete +meca=l olmayup \`is:k! zenci=ri:nu:n= esi=ri: ve derd u: mi:h!net +esra=rinun= h=abi=ri: Reva=ni=..i: bi=-k!ara=r u a=s:u:fte vu: za=r +ant!ak!a'lla=hu bi:'l-h!ak!k!i ve's!-s!ava=bi: ve h!allas!ahu +\`ani:'l-su\'a=li: vel-ceva=b + +\beyt + Mes=nevi= + Gel ey s:u=ri=de-di:l ma\`z=u=r oldun= + Bu i:s:de c:u:nki: sen me\'mu=r oldun= + Bas!i=ret ehli: an=ladi c:u: h!a=lu:n= + Dah=i: k!almadi hi=c: \`o:z=re meca=lu:n= + Ele al h=a=meyi: go:ster ma\`a=ni= + Mu:zeyyen k!il yi:ne si:lk..i: beya=ni + +\nathr +\`A=s:ik!lik! zama=ninda \`is:k! va=sit!asi ve s:eyda=lik! \`a=lemi:nde +s:evk! vesi=lesi:, vus!lat eyya=minda mah!abbet muk!tez:a=si, fi:ra=k! +gu:nleri:nde h!urk!at i:k!ti:z:a=si, baha=r mevsi:mi:nde s!oh!bet +germi:yyeti:, mah!bu=blar mecli:si:nde s:ara=b keyfi:yyeti:, ca=na=neler +i:bra=mi ve \`a=s:ik!lar i:k!da=mi ve fuz:ala= mus!a=h!abeti: ve \`uk!ala= +i:lti:fa=ti, ehl..i: di:ller rag:beti: ve t!a=li:bler mi:nneti: i:le di:du:gu: +ebya=t ve es:\`a=r, ki: her bi:ri:nu:n= lat!i=f ma\`a=ni=si: ca=m..i naz!ma +s:ara=b..i rengi=n ve s:i=ri=n h=aya=la=ti bezm..i: s!afa=da nuk!l..i: +s:ekkeri=n olup mu\`a=s:i:ra=n..i mecli:s..i: z=evk! bu meyh=a=nenu:n= +ba=deci:si: ve h!ari=fa=n..i bezm..i: s:evk! bu ka=s:a=nenu:n= sebu=-kes:i: +olmis:lardi. K!alem..i: i:\`ti:z=a=r bu h=a=me..i: i:nki:sa=r i:le bu evra=k!a +tah!ri=re i:k!da=m ve bu ecza=ya tast!i=re i:hti:ma=m go:sterdi:. + +\beyt + Mes=nevi= + Gel ey cu=yende..i: esra=r..i ma\`ni= + Gel ey gu=yende..i: gu:fta=r..i ma\`ni= + Gel ey gevher-fu:ru=s:..i naz!m u i:ns:a= + Gel ey cevher-fu:ru=s:..i s:i:\`r..i: g:arra= + Gel ey nak!k!a=s:..i tas!vi=r..i: h=aya=la=t + Gel ey ressa=m..i tah!ri=r..i: mak!a=la=t + H=at! u ma\`ni=den i:stersen= i:s:a=ret + Bu ebya=tum yeter san=a bes:a=ret + H=aya=l..i: naz!m..i g:arra= h=at!t!..i di:lkes: + Go:ri:nu:r go:zlere beyt..i: mu:nak!k!as: + H=at!i beytu:n= ten..i: i:nsa=na ben=zer + H=aya=l anun= i:c:i:nde ca=na ben=zer + Ma\`a=ni=du:r h=at!..i es:\`a=r i:c:i:nde + Ac:ilmis: ta=ze gu:ller h=a=r i:c:i:nde + Seva=d..i naz!mdur s!an s!ah!n..i cennet + Tera=zu= vezndu:r ma\`na= k!iya=met + H=aya=l..i: beyt k!as!r..i ka=mra=ni= + I:ki: mis!ra\`dur i:ki: nerdu:ba=ni + H=at! u ma\`ni= ki: i:tmi:s: a=s:i:na=lik! + Gi:ce s:em\` i:le bulmis: ru=s:ena=lik! + Anun=c:u:n di:r go:ru:p ya=r..i suh=enda=n + Bulut i:c:i:ndedu:r s!an ma=h..i ta=ba=n + Hu:ma= olmak! gerek ma\`ni=nu:n= adi + Ki: beyt olmis: durur i:ki: k!ana=di + Yah=o=d naz!mum \`aru=si h=at! yeri:ne + T!ak!inmis: zi=net i:c:u:n \`anberi=ne + Ne zi=ba=dur go:r ol s!a=h!i:b-cema=li: + Ki: h=at!t! u nok!t!a olmis: zu:lf u: h=a=li: + Bu ni:ce ma\`ni= ni:ce h=at!t!a ben=zer + Hema=n bi:r k!as:i go:zi: k!ara di:lber + Ya \`a=s:ik!dur yi:ne bi:r meh-li:k!a=ya + Ki: go:n=legi:n boyamis:dur k!araya + Gu:zel ma\`ni= i:le h=at!t!..i di:l-a=vi=z + T!urur Gu:lgu=n i:le bi:r yerde S:ebdi=z + Zi:hi= h=at!t! u zi:hi= ma\`na=..yi ru=s:en + S!anasin pehleva=ndur geydi: cevs:en + H=aya=lu:n= gu=s:e..i: h=at!dur t!urag:i + Olurmis: mi=s:eler arslan yatag:i + Bu ni:ce s!ayd olur buna ne tedbi=r + Bu arslana gerekdu:r i:ki: zenci=r + +\nathr +I:lahi= bu gu:ldeste..i: t!ara=vet-bah=s:a=..yi c:emen..i: mah!abbet ve bu +nah=l..i: naz:a=ret-efza=..yi gu:ls:en..i: h!ayret mah!bu=blar bezmi:nu:n= +a=ra=yi:s:i: ve \`a=s:ik!lar mec\-li:\-si:nu:n= a=sa=yi:s:i: olup \`ana=di:l..i: +s:evk! ve bela=bi:l..i: z=evk! tema=s:a=sindan h!ayra=n ve bu=y..i +di:l-a=vi=zi:nden ser-gerda=n olup a=sa=yi:s:..i: ca=n..i h=asta ve +gu:s:a=yi:s:..i: h=a=t!ir..i beste ola. + +\beyt + Beyt + Bu ba=g:ba=n..i t!ab\`uma s!ad a=feri=n ki:m + Vi:rdi: ci:ha=na naz!mum i:le ra=yega=n gu:l + +\nathr +Ve mercu=dur ki: bu la=leza=r..i h=aya=l ve sebzeza=r..i mak!a=l seyra=nga=h..i +h=ava=\-t!ir-s!a=h!i:b-kema=l ve tema=s:a=ga=h..i z:ama=yi:r..i: ehl..i: h!a=l +olup t!ab\`..i a=bda=r ve z=i:hn..i: cu=yba=rlarindan nad!ret..i: ta=ze ve +h=ad!ret..i: bi=-enda=ze h!a=s!il eyleye. + +\beyt + Beyt + Gu:lza=r..i t!ab\`umun= deru:ben ta=ze gu:lleri:n + Bi:r nah=l bag:ladum k'ola \`a=lemde ya=di:ga=r + +\nathr +Ve mu:tevak!k!a\`dur ki: bu res:ah!a=t..i: ki:lk..i: \`anber-ba=r ve +nefah!a=t..i: h=a=me..i: si:h!r-a=s:a=r nesi=m..i: gu:lza=r ve hava=..yi +ezha=r..i nevbaha=r gi:bi: ca=n-feza= vu: ru=h!-perver ve di:l-gu:s:a= vu: +s!afa=-gu:ster olup h=alk!..i \`a=lem heva=da=ri olmag: i:le k!adr u: +i:\`ti:ba=r bula. + +\beyt + Beyt + Yazmadan es:\`a=rumi olmis: durur h!ayra=n k!alem + Bu peri=s:a=n so:zleru:mden oldi ser-gerda=n k!alem + +\nathr +Ve mes\'u=ldu:r ki: erba=b..i naz!ar ve as!h!a=b..i bas!ar bu evra=k!..i +muh=at!t!at!a ve bu ecza=..yi muh=abbat!a di=de..i: k!abu=l i:le na=z!ir olup +h=at!a=sin is!la=h buyurmag:la \`uyu=bin sa=ti:r olalar + +\beyt + Mes=nevi= + Go:n=u:l c:ekme so:zu:n=den i:nfi:\`a=li: + Bi:lu:r ehl..i: di:l olanlar bu h!a=li: + H=at!a=suz olmaz i:mi:s: hi=c: gu:fta=r + Olurmis: bi:r gu:lu:n= yaninda bi:n h=a=r + +\beyt + K!it!\`a + Reva=ni= bu ni:ce di=va=neli:kdu:r + Ki: di=va=n yazmag:a i:k!da=m i:dersi:n + Elu:n=e ca=m alup serh=o=s:lanursin + Hema=n sen kendu:n=i: bedna=m i:dersi:n + +\beyt + Mes=nevi= + I:la=hi= senden i:rmezse \`i:na=yet + Bu i:s:de eylemez \`ak!lum ki:fa=yet + Beni: sen s:ermsa=r i:tme I:la=hi= + Ki: s!ig:indum san=a ben ya= I:la=hi= +\endmode +\bye diff --git a/language/turkish/inputs/tkccode.tex b/language/turkish/inputs/tkccode.tex new file mode 100644 index 0000000000..39bc30c6ad --- /dev/null +++ b/language/turkish/inputs/tkccode.tex @@ -0,0 +1,62 @@ +% uccodes and lccodes for Turkish font with full diacriticals. +\chardef\`='43 \chardef\'='100 % codes for ayn and hamza (accents not needed) + +% codes required for postpositive accent convention + +\lccode`!=`! \uccode`!=`! % These four characters are +\lccode`==`= \uccode`==`= % swallowed up by the ligtable +\lccode`:=`: \uccode`:=`: % but must have \lccodes to +\lccode`.=`. \uccode`.=`. % permit hyphenation of Turkish + +\lccode'43='43 \uccode'43='43 % ayn +\lccode'100='100 \uccode'100='100 % hamza +\lccode'175='175 \uccode'175='175 % dot for Persian izafet + +% uccodes and lccodes for future use with direct input + +\uccode'044='044 \uccode'074='044 +\uccode'013='013 \uccode'033='013 +\uccode'000='000 \uccode'020='000 +\uccode'014='014 \uccode'034='014 +\uccode'015='015 \uccode'035='015 +\uccode'001='001 \uccode'021='001 +\uccode'004='004 \uccode'024='004 +\uccode'005='005 \uccode'025='005 +\uccode'046='046 \uccode'076='046 +\uccode'007='007 \uccode'027='007 +\uccode'010='010 \uccode'030='010 +\uccode'016='016 \uccode'036='016 +\uccode'002='002 \uccode'022='002 +\uccode'003='003 \uccode'023='003 +\uccode'045='045 \uccode'075='045 +\uccode'017='017 \uccode'037='017 +\uccode'052='052 \uccode'053='052 +\uccode'0136='0136 \uccode'0176='0136 +\uccode'006='006 \uccode'026='006 +\uccode'011='011 \uccode'031='011 +\uccode'0137='0137 \uccode'0177='0137 +\uccode'012='012 \uccode'032='012 + + +\lccode'074='074 \lccode'044='074 +\lccode'033='033 \lccode'013='033 +\lccode'020='020 \lccode'000='020 +\lccode'034='034 \lccode'014='034 +\lccode'035='035 \lccode'015='035 +\lccode'021='021 \lccode'001='021 +\lccode'024='024 \lccode'004='024 +\lccode'025='025 \lccode'005='025 +\lccode'076='076 \lccode'046='076 +\lccode'027='027 \lccode'007='027 +\lccode'030='030 \lccode'010='030 +\lccode'036='036 \lccode'016='036 +\lccode'022='022 \lccode'002='022 +\lccode'023='023 \lccode'003='023 +\lccode'037='037 \lccode'017='037 +\lccode'075='075 \lccode'045='075 +\lccode'053='053 \lccode'052='053 +\lccode'0176='0176 \lccode'0136='0176 +\lccode'026='026 \lccode'006='026 +\lccode'031='031 \lccode'011='031 +\lccode'0177='0177 \lccode'0137='0177 +\lccode'032='032 \lccode'012='032 diff --git a/language/turkish/inputs/tkhyphen.tex b/language/turkish/inputs/tkhyphen.tex new file mode 120000 index 0000000000..05b78e17ec --- /dev/null +++ b/language/turkish/inputs/tkhyphen.tex @@ -0,0 +1 @@ +../../hyphenation/tkhyph.tex
\ No newline at end of file diff --git a/language/turkish/inputs/tplain.tex b/language/turkish/inputs/tplain.tex new file mode 100644 index 0000000000..71966757bb --- /dev/null +++ b/language/turkish/inputs/tplain.tex @@ -0,0 +1,1240 @@ +% This is a Turkish adaptation of the plain TeX format that's +% described in The TeXbook, modified for Turkish fonts and hyphenation + +% Adapted by P. A. MacKay. 8 May, 1988 + +% Would like to avoid using a modified plain, but need to replace +% some of the preloaded fonts for a truly Turkish TeX + +\catcode`\{=1 % left brace is begin-group character +\catcode`\}=2 % right brace is end-group character +\catcode`\$=3 % dollar sign is math shift +\catcode`\&=4 % ampersand is alignment tab +\catcode`\#=6 % hash mark is macro parameter character +\catcode`\^=7 \catcode`\^^K=7 % circumflex and uparrow are for superscripts +\catcode`\_=8 \catcode`\^^A=8 % underline and downarrow are for subscripts +\catcode`\^^I=10 % ascii tab is a blank space +\chardef\active=13 \catcode`\~=\active % tilde is active +\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par" + +\message{Preloading the plain format: codes,} + +% We had to define the \catcodes right away, before the message line, +% since \message uses the { and } characters. +% When INITEX (the TeX initializer) starts up, +% it has defined the following \catcode values: +% \catcode`\^^@=9 % ascii null is ignored +% \catcode`\^^M=5 % ascii return is end-line +% \catcode`\\=0 % backslash is TeX escape character +% \catcode`\%=14 % percent sign is comment character +% \catcode`\ =10 % ascii space is blank space +% \catcode`\^^?=15 % ascii delete is invalid +% \catcode`\A=11 ... \catcode`\Z=11 % uppercase letters +% \catcode`\a=11 ... \catcode`\z=11 % lowercase letters +% all others are type 12 (other) + +% Here is a list of the characters that have been specially catcoded: +\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} +% (not counting ascii null, tab, linefeed, formfeed, return, delete) +% Each symbol in the list is preceded by \do, which can be defined +% if you want to do something to every item in the list. + +% We make @ signs act like letters, temporarily, to avoid conflict +% between user names and internal control sequences of plain format. +\catcode`@=11 + +% INITEX sets up \mathcode x=x, for x=0..127, except that +% \mathcode x=x+"7100, for x = `A to `Z and `a to `z; +% \mathcode x=x+"7000, for x = `0 to `9. +% The following changes define internal codes as recommended +% in Appendix C of The TeXbook: +\mathcode`\^^@="2201 % \cdot +\mathcode`\^^A="3223 % \downarrow +\mathcode`\^^B="010B % \alpha +\mathcode`\^^C="010C % \beta +\mathcode`\^^D="225E % \land +\mathcode`\^^E="023A % \lnot +\mathcode`\^^F="3232 % \in +\mathcode`\^^G="0119 % \pi +\mathcode`\^^H="0115 % \lambda +\mathcode`\^^I="010D % \gamma +\mathcode`\^^J="010E % \delta +\mathcode`\^^K="3222 % \uparrow +\mathcode`\^^L="2206 % \pm +\mathcode`\^^M="2208 % \oplus +\mathcode`\^^N="0231 % \infty +\mathcode`\^^O="0140 % \partial +\mathcode`\^^P="321A % \subset +\mathcode`\^^Q="321B % \supset +\mathcode`\^^R="225C % \cap +\mathcode`\^^S="225B % \cup +\mathcode`\^^T="0238 % \forall +\mathcode`\^^U="0239 % \exists +\mathcode`\^^V="220A % \otimes +\mathcode`\^^W="3224 % \leftrightarrow +\mathcode`\^^X="3220 % \leftarrow +\mathcode`\^^Y="3221 % \rightarrow +\mathcode`\^^Z="8000 % \ne +\mathcode`\^^[="2205 % \diamond +\mathcode`\^^\="3214 % \le +\mathcode`\^^]="3215 % \ge +\mathcode`\^^^="3211 % \equiv +\mathcode`\^^_="225F % \lor +\mathcode`\ ="8000 % \space +\mathcode`\!="5021 +\mathcode`\'="8000 % ^\prime +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\,="613B +\mathcode`\-="2200 +\mathcode`\.="013A +\mathcode`\/="013D +\mathcode`\:="303A +\mathcode`\;="603B +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\>="313E +\mathcode`\?="503F +\mathcode`\[="405B +\mathcode`\\="026E % \backslash +\mathcode`\]="505D +\mathcode`\_="8000 % \_ +\mathcode`\{="4266 +\mathcode`\|="026A +\mathcode`\}="5267 +\mathcode`\^^?="1273 % \smallint + +% INITEX sets \uccode`x=`X and \uccode `X=`X for all letters x, +% and \lccode`x=`x, \lccode`X=`x; all other values are zero. +% No changes to those tables are needed in plain TeX format. + +% uccodes and lccodes for Turkish font with full diacriticals. + +\message{Turkish character codes,} + +\chardef\`='43 \chardef\'='100 % codes for ayn and hamza + +% codes required for postpositive accent convention + +\lccode`!=`! \uccode`!=`! % These three characters are +\lccode`==`= \uccode`==`= % swallowed up by the ligtable +\lccode`:=`: \uccode`:=`: % but must have \lccodes for hyphenation + +\lccode'43='43 \uccode'43='43 % ayn +\lccode'100='100 \uccode'100='100 % hamza +\lccode'175='175 \uccode'175='175 % dot for Persian izafet + + +% INITEX sets \sfcode x=1000 for all x, except that \sfcode`X=999 +% for uppercase letters. The following changes are needed: +\sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0 +% The \nonfrenchspacing macro will make further changes to \sfcode values. + +% Finally, INITEX sets all \delcode values to -1, except \delcode`.=0 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\/="02F30E +\delcode`\|="26A30C +\delcode`\\="26E30F +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +% To make the plain macros more efficient in time and space, +% several constant values are declared here as control sequences. +% If they were changed, anything could happen; so they are private symbols. +\chardef\@ne=1 +\chardef\tw@=2 +\chardef\thr@@=3 +\chardef\sixt@@n=16 +\chardef\@cclv=255 +\mathchardef\@cclvi=256 +\mathchardef\@m=1000 +\mathchardef\@M=10000 +\mathchardef\@MM=20000 + +% Allocation of registers + +% Here are macros for the automatic allocation of \count, \box, \dimen, +% \skip, \muskip, and \toks registers, as well as \read and \write +% stream numbers, \fam codes, and \insert numbers. + +\message{registers,} + +% When a register is used only temporarily, it need not be allocated; +% grouping can be used, making the value previously in the register return +% after the close of the group. The main use of these macros is for +% registers that are defined by one macro and used by others, possibly at +% different nesting levels. All such registers should be defined through +% these macros; otherwise conflicts may occur, especially when two or more +% more macro packages are being used at once. + +% The following counters are reserved: +% 0 to 9 page numbering +% 10 count allocation +% 11 dimen allocation +% 12 skip allocation +% 13 muskip allocation +% 14 box allocation +% 15 toks allocation +% 16 read file allocation +% 17 write file allocation +% 18 math family allocation +% 19 insert allocation +% 20 the most recently allocated number +% 21 constant -1 +% New counters are allocated starting with 22, 23, etc. Other registers are +% allocated starting with 10. This leaves 0 through 9 for the user to play +% with safely, except that counts 0 to 9 are considered to be the page and +% subpage numbers (since they are displayed during output). In this scheme, +% \count 10 always contains the number of the highest-numbered counter that +% has been allocated, \count 14 the highest-numbered box, etc. +% Inserts are given numbers 254, 253, etc., since they require a \count, +% \dimen, \skip, and \box all with the same number; \count 19 contains the +% lowest-numbered insert that has been allocated. Of course, \box255 is +% reserved for \output; \count255, \dimen255, and \skip255 can be used freely. + +% It is recommended that macro designers always use +% \global assignments with respect to registers numbered 1, 3, 5, 7, 9, and +% always non-\global assignments with respect to registers 0, 2, 4, 6, 8, 255. +% This will prevent ``save stack buildup'' that might otherwise occur. + +\count10=21 % allocates \count registers 22, 23, ... +\count11=9 % allocates \dimen registers 10, 11, ... +\count12=9 % allocates \skip registers 10, 11, ... +\count13=9 % allocates \muskip registers 10, 11, ... +\count14=9 % allocates \box registers 10, 11, ... +\count15=9 % allocates \toks registers 10, 11, ... +\count16=-1 % allocates input streams 0, 1, ... +\count17=-1 % allocates output streams 0, 1, ... +\count18=3 % allocates math families 4, 5, ... +\count19=255 % allocates insertions 254, 253, ... +\countdef\insc@unt=19 % the insertion counter +\countdef\allocationnumber=20 % the most recent allocation +\countdef\m@ne=21 \m@ne=-1 % a handy constant +\def\wlog{\immediate\write\m@ne} % write on log file (only) + +% Here are abbreviations for the names of scratch registers +% that don't need to be allocated. + +\countdef\count@=255 +\dimendef\dimen@=0 +\dimendef\dimen@i=1 % global only +\dimendef\dimen@ii=2 +\skipdef\skip@=0 +\toksdef\toks@=0 + +% Now, we define \newcount, \newbox, etc. so that you can say \newcount\foo +% and \foo will be defined (with \countdef) to be the next counter. +% To find out which counter \foo is, you can look at \allocationnumber. +% Since there's no \boxdef command, \chardef is used to define a \newbox, +% \newinsert, \newfam, and so on. + +\outer\def\newcount{\alloc@0\count\countdef\insc@unt} +\outer\def\newdimen{\alloc@1\dimen\dimendef\insc@unt} +\outer\def\newskip{\alloc@2\skip\skipdef\insc@unt} +\outer\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi} +\outer\def\newbox{\alloc@4\box\chardef\insc@unt} +\let\newtoks=\relax % we do this to allow plain.tex to be read in twice +\outer\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}} +\outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi} +\outer\def\newread{\alloc@6\read\chardef\sixt@@n} +\outer\def\newwrite{\alloc@7\write\chardef\sixt@@n} +\outer\def\newfam{\alloc@8\fam\chardef\sixt@@n} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2% make sure there's still room + \allocationnumber=\count1#1% + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\outer\def\newinsert#1{\global\advance\insc@unt by\m@ne + \ch@ck0\insc@unt\count + \ch@ck1\insc@unt\dimen + \ch@ck2\insc@unt\skip + \ch@ck4\insc@unt\box + \allocationnumber=\insc@unt + \global\chardef#1=\allocationnumber + \wlog{\string#1=\string\insert\the\allocationnumber}} +\def\ch@ck#1#2#3{\ifnum\count1#1<#2% + \else\errmessage{No room for a new #3}\fi} + +% Here are some examples of allocation. +\newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen> +\newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow +\newskip\centering \centering=0pt plus 1000pt minus 1000pt +\newdimen\p@ \p@=1pt % this saves macro space and time +\newdimen\z@ \z@=0pt % can be used both for 0pt and 0 +\newskip\z@skip \z@skip=0pt plus0pt minus0pt +\newbox\voidb@x % permanently void box register + +% And here's a different sort of allocation: +% For example, \newif\iffoo creates \footrue, \foofalse to go with \iffoo. +\outer\def\newif#1{\count@\escapechar \escapechar\m@ne + \expandafter\expandafter\expandafter + \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}% + \expandafter\expandafter\expandafter + \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}% + \@if#1{false}\escapechar\count@} % the condition starts out false +\def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname} +{\uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}} % `if' is required + +% Assign initial values to TeX's parameters + +\message{parameters,} + +% All of TeX's numeric parameters are listed here, +% but the code is commented out if no special value needs to be set. +% INITEX makes all parameters zero except where noted. + +\pretolerance=100 +\tolerance=200 % INITEX sets this to 10000 +\hbadness=1000 +\vbadness=1000 +\linepenalty=10 +\hyphenpenalty=50 +\exhyphenpenalty=50 +\binoppenalty=700 +\relpenalty=500 +\clubpenalty=150 +\widowpenalty=150 +\displaywidowpenalty=50 +\brokenpenalty=100 +\predisplaypenalty=10000 +% \postdisplaypenalty=0 +% \interlinepenalty=0 +% \floatingpenalty=0, set during \insert +% \outputpenalty=0, set before TeX enters \output +\doublehyphendemerits=10000 +\finalhyphendemerits=5000 +\adjdemerits=10000 +% \looseness=0, cleared by TeX after each paragraph +% \pausing=0 +% \tracingonline=0 +% \tracingmacros=0 +% \tracingstats=0 +% \tracingparagraphs=0 +% \tracingpages=0 +% \tracingoutput=0 +\tracinglostchars=1 +% \tracingcommands=0 +% \tracingrestores=0 +\uchyph=1 +% \globaldefs=0 +% \maxdeadcycles=25 % INITEX does this +% \hangafter=1 % INITEX does this, also TeX after each paragraph +% \fam=0 +% \mag=1000 % INITEX does this +% \escapechar=`\\ % INITEX does this +\defaulthyphenchar=`\- +\defaultskewchar=-1 +% \endlinechar=`\^^M % INITEX does this +\newlinechar=-1 +\delimiterfactor=901 +% \time=now % TeX does this at beginning of job +% \day=now % TeX does this at beginning of job +% \month=now % TeX does this at beginning of job +% \year=now % TeX does this at beginning of job +\showboxbreadth=5 +\showboxdepth=3 + +\hfuzz=0.1pt +\vfuzz=0.1pt +\overfullrule=5pt +\hsize=6.5in +\vsize=8.9in +\maxdepth=4pt +\splitmaxdepth=\maxdimen +\boxmaxdepth=\maxdimen +% \lineskiplimit=0pt, changed by \normalbaselines +\delimitershortfall=5pt +\nulldelimiterspace=1.2pt +\scriptspace=0.5pt +% \mathsurround=0pt +% \predisplaysize=0pt, set before TeX enters $$ +% \displaywidth=0pt, set before TeX enters $$ +% \displayindent=0pt, set before TeX enters $$ +\parindent=20pt +% \hangindent=0pt, zeroed by TeX after each paragraph +% \hoffset=0pt +% \voffset=0pt + +% \baselineskip=0pt, changed by \normalbaselines +% \lineskip=0pt, changed by \normalbaselines +\parskip=0pt plus 1pt +\abovedisplayskip=12pt plus 3pt minus 9pt +\abovedisplayshortskip=0pt plus 3pt +\belowdisplayskip=12pt plus 3pt minus 9pt +\belowdisplayshortskip=7pt plus 3pt minus 4pt +% \leftskip=0pt +% \rightskip=0pt +\topskip=10pt +\splittopskip=10pt +% \tabskip=0pt +% \spaceskip=0pt +% \xspaceskip=0pt +\parfillskip=0pt plus 1fil + +\thinmuskip=3mu +\medmuskip=4mu plus 2mu minus 4mu +\thickmuskip=5mu plus 5mu + +% We also define special registers that function like parameters: +\newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt +\newskip\medskipamount \medskipamount=6pt plus 2pt minus 2pt +\newskip\bigskipamount \bigskipamount=12pt plus 4pt minus 4pt +\newskip\normalbaselineskip \normalbaselineskip=12pt +\newskip\normallineskip \normallineskip=1pt +\newdimen\normallineskiplimit \normallineskiplimit=0pt +\newdimen\jot \jot=3pt +\newcount\interdisplaylinepenalty \interdisplaylinepenalty=100 +\newcount\interfootnotelinepenalty \interfootnotelinepenalty=100 + +% Definitions for preloaded fonts + +\def\magstephalf{1095 } +\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax} + +% Fonts assigned to \preloaded are not part of "plain TeX", +% but they are preloaded so that other format packages can use them. +% For example, if another set of macros says "\font\ninerm=cmr9", +% TeX will not have to reload the font metric information for cmr9. + +\message{fonts,} + +\font\tenrm=wtkr10 % roman text +\font\preloaded=cmr9 +\font\preloaded=cmr8 +\font\sevenrm=cmr7 +\font\preloaded=cmr6 +\font\fiverm=cmr5 + +\font\teni=cmmi10 % math italic +\font\preloaded=cmmi9 +\font\preloaded=cmmi8 +\font\seveni=cmmi7 +\font\preloaded=cmmi6 +\font\fivei=cmmi5 + +\font\tensy=cmsy10 % math symbols +\font\preloaded=cmsy9 +\font\preloaded=cmsy8 +\font\sevensy=cmsy7 +\font\preloaded=cmsy6 +\font\fivesy=cmsy5 + +\font\tenex=cmex10 % math extension + +\font\preloaded=cmss10 % sans serif +\font\preloaded=cmssq8 + +\font\preloaded=cmssi10 % sans serif italic +\font\preloaded=cmssqi8 + +\font\tenbf=cmbx10 % boldface extended +\font\preloaded=cmbx9 +\font\preloaded=cmbx8 +\font\sevenbf=cmbx7 +\font\preloaded=cmbx6 +\font\fivebf=cmbx5 + +\font\tentt=cmtt10 % typewriter +\font\preloaded=cmtt9 +\font\preloaded=cmtt8 + +\font\preloaded=cmsltt10 % slanted typewriter + +\font\tensl=cmsl10 % slanted roman +\font\preloaded=cmsl9 +\font\preloaded=cmsl8 + +\font\tenit=wtkti10 % text italic +\font\preloaded=cmti9 +\font\preloaded=cmti8 +\font\preloaded=cmti7 + +\message{more fonts,} +\font\preloaded=cmu10 % unslanted text italic + +\font\preloaded=cmmib10 % bold math italic +\font\preloaded=cmbsy10 % bold math symbols + +\font\preloaded=cmcsc10 % caps and small caps + +\font\preloaded=cmssbx10 % sans serif bold extended + +\font\preloaded=cmdunh10 % Dunhill style + +\font\preloaded=cmr7 scaled \magstep4 % for titles +\font\preloaded=cmtt10 scaled \magstep2 +\font\preloaded=cmssbx10 scaled \magstep2 + +\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols + +% Additional \preloaded fonts can be specified here. +% (And those that were \preloaded above can be eliminated.) + +\let\preloaded=\undefined % preloaded fonts must be declared anew later. + +\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177 +\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60 + +\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm +\def\rm{\fam\z@\tenrm} +\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei +\def\mit{\fam\@ne} \def\oldstyle{\fam\@ne\teni} +\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy +\def\cal{\fam\tw@} +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\newfam\itfam \def\it{\fam\itfam\tenit} % \it is family 4 +\textfont\itfam=\tenit +\newfam\slfam \def\sl{\fam\slfam\tensl} % \sl is family 5 +\textfont\slfam=\tensl +\newfam\bffam \def\bf{\fam\bffam\tenbf} % \bf is family 6 +\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf +\scriptscriptfont\bffam=\fivebf +\newfam\ttfam \def\tt{\fam\ttfam\tentt} % \tt is family 7 +\textfont\ttfam=\tentt + +% Macros for setting ordinary text +\message{macros,} + +\def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m + \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m} +\def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000% + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 } + +\def\normalbaselines{\lineskip\normallineskip + \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit} + +\def\^^M{\ } % control <return> = control <space> +\def\^^I{\ } % same for <tab> + +\def\lq{`} \def\rq{'} +\def\lbrack{[} \def\rbrack{]} + +\let\endgraf=\par \let\endline=\cr + +\def\space{ } +\def\empty{} +\def\null{\hbox{}} + +\let\bgroup={ \let\egroup=} + +% In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}' +% since this allows, for example, `\let\par=\cr \obeylines \halign{...' +{\catcode`\^^M=\active % these lines must end with % + \gdef\obeylines{\catcode`\^^M\active \let^^M\par}% + \global\let^^M\par} % this is in case ^^M appears in a \write +\def\obeyspaces{\catcode`\ \active} +{\obeyspaces\global\let =\space} + +\def\loop#1\repeat{\def\body{#1}\iterate} +\def\iterate{\body \let\next\iterate \else\let\next\relax\fi \next} +\let\repeat=\fi % this makes \loop...\if...\repeat skippable + +\def\thinspace{\kern .16667em } +\def\negthinspace{\kern-.16667em } +\def\enspace{\kern.5em } + +\def\enskip{\hskip.5em\relax} +\def\quad{\hskip1em\relax} +\def\qquad{\hskip2em\relax} + +\def\smallskip{\vskip\smallskipamount} +\def\medskip{\vskip\medskipamount} +\def\bigskip{\vskip\bigskipamount} + +\def\nointerlineskip{\prevdepth-1000\p@} +\def\offinterlineskip{\baselineskip-1000\p@ + \lineskip\z@ \lineskiplimit\maxdimen} + +\def\vglue{\afterassignment\vgl@\skip@=} +\def\vgl@{\par \dimen@\prevdepth \hrule height\z@ + \nobreak\vskip\skip@ \prevdepth\dimen@} +\def\hglue{\afterassignment\hgl@\skip@=} +\def\hgl@{\leavevmode \count@\spacefactor \vrule width\z@ + \nobreak\hskip\skip@ \spacefactor\count@} + +\def~{\penalty\@M \ } % tie +\def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-' + +\def\break{\penalty-\@M} +\def\nobreak{\penalty \@M} +\def\allowbreak{\penalty \z@} + +\def\filbreak{\par\vfil\penalty-200\vfilneg} +\def\goodbreak{\par\penalty-500 } +\def\eject{\par\break} +\def\supereject{\par\penalty-\@MM} + +\def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi} +\def\smallbreak{\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi} +\def\medbreak{\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi} +\def\bigbreak{\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi} + +\def\line{\hbox to\hsize} +\def\leftline#1{\line{#1\hss}} +\def\rightline#1{\line{\hss#1}} +\def\centerline#1{\line{\hss#1\hss}} + +\def\rlap#1{\hbox to\z@{#1\hss}} +\def\llap#1{\hbox to\z@{\hss#1}} + +\def\m@th{\mathsurround=\z@} +\def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@ + \m@th \underline{\box\z@}$} + +\newbox\strutbox +\setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@} +\def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi} + +\def\hidewidth{\hskip\hideskip} % for alignment entries that can stick out +\def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign +\newcount\mscount +\def\multispan#1{\omit \mscount#1 + \loop\ifnum\mscount>\@ne \sp@n\repeat} +\def\sp@n{\span\omit\advance\mscount\m@ne} + +\newif\ifus@ \newif\if@cr +\newbox\tabs \newbox\tabsyet \newbox\tabsdone + +\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null} +\def\settabs{\setbox\tabs\null \futurelet\next\sett@b} +\let\+=\relax % in case this file is being read in twice +\def\sett@b{\ifx\next\+\let\next\relax + \def\next{\afterassignment\s@tt@b\let\next}% + \else\let\next\s@tcols\fi\next} +\def\s@tt@b{\let\next\relax\us@false\m@ketabbox} +\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+ +\outer\def\+{\tabalign} +\def\s@tcols#1\columns{\count@#1 \dimen@\hsize + \loop\ifnum\count@>\z@ \@nother \repeat} +\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@ + \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}% + \advance\dimen@-\dimen@ii \advance\count@\m@ne} + +\def\m@ketabbox{\begingroup + \global\setbox\tabsyet\copy\tabs + \global\setbox\tabsdone\null + \def\cr{\@crtrue\crcr\egroup\egroup + \ifus@\unvbox\z@\lastbox\fi\endgroup + \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}% + \setbox\z@\vbox\bgroup\@crfalse + \ialign\bgroup&\t@bbox##\t@bb@x\crcr} + +\def\t@bbox{\setbox\z@\hbox\bgroup} +\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column + \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet + \global\setbox\@ne\lastbox}% now \box\@ne holds its size + \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}% + \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi + \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi + \box\z@} + +\def\hang{\hangindent\parindent} +\def\textindent#1{\indent\llap{#1\enspace}\ignorespaces} +\def\item{\par\hang\textindent} +\def\itemitem{\par\indent \hangindent2\parindent \textindent} +\def\narrower{\advance\leftskip\parindent + \advance\rightskip\parindent} + +\outer\def\beginsection#1\par{\vskip\z@ plus.3\vsize\penalty-250 + \vskip\z@ plus-.3\vsize\bigskip\vskip\parskip + \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent} +\outer\def\proclaim #1. #2\par{\medbreak + \noindent{\bf#1.\enspace}{\sl#2}\par + \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi} + +\def\raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax} +\def\ttraggedright{\tt\rightskip\z@ plus2em\relax} % for use with \tt only + +\chardef\%=`\% +\chardef\&=`\& +\chardef\#=`\# +\chardef\$=`\$ +\chardef\ss="19 +\chardef\ae="1A +\chardef\oe="1B +\chardef\o="1C +\chardef\AE="1D +\chardef\OE="1E +\chardef\O="1F +\chardef\i="10 \chardef\j="11 % dotless letters +\def\aa{\accent23a} +\def\l{\char32l} +\def\L{\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}} + +\def\leavevmode{\unhbox\voidb@x} % begins a paragraph, if necessary +\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}} +\def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex% + \rlap{\raise.67\dimen@\hbox{\char'27}}A} + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} + +\def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex% + \ialign{##\crcr#1\crcr}}} % put characters over each other +\def\ooalign{\lineskiplimit-\maxdimen \oalign} +\def\d#1{\oalign{#1\crcr\hidewidth.\hidewidth}} +\def\b#1{\oalign{#1\crcr\hidewidth + \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}} +\def\c#1{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1% + \else{\ooalign{\hidewidth\char24\hidewidth\crcr\unhbox\z@}}\fi} +\def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\mathhexbox20D}}} + +\def\dots{\relax\ifmmode\ldots\else$\m@th\ldots\,$\fi} +\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX} + +\def\v#1{{\accent20 #1}} \let\^^_=\v +\def\u#1{{\accent21 #1}} \let\^^S=\u +\def\=#1{{\accent22 #1}} +\def\^#1{{\accent94 #1}} \let\^^D=\^ +\def\.#1{{\accent95 #1}} +\def\H#1{{\accent"7D #1}} +\def\~#1{{\accent"7E #1}} +\def\"#1{{\accent"7F #1}} +\def\t#1{{\edef\next{\the\font}\the\textfont1\accent"7F\next#1}} + +\def\hrulefill{\leaders\hrule\hfill} +\def\dotfill{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill} +\def\rightarrowfill{$\m@th\mathord-\mkern-6mu% + \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-6mu% + \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill + \mkern-6mu\mathord-$} +\mathchardef\braceld="37A \mathchardef\bracerd="37B +\mathchardef\bracelu="37C \mathchardef\braceru="37D +\def\downbracefill{$\m@th\braceld\leaders\vrule\hfill\braceru + \bracelu\leaders\vrule\hfill\bracerd$} +\def\upbracefill{$\m@th\bracelu\leaders\vrule\hfill\bracerd + \braceld\leaders\vrule\hfill\braceru$} + +\outer\def\bye{\par\vfill\supereject\end} + +% Macros for math setting +\message{math definitions,} + +\let\sp=^ \let\sb=_ +\def\,{\mskip\thinmuskip} +\def\>{\mskip\medmuskip} +\def\;{\mskip\thickmuskip} +\def\!{\mskip-\thinmuskip} +\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}} +{\catcode`\'=\active \gdef'{^\bgroup\prim@s}} +\def\prim@s{\prime\futurelet\next\pr@m@s} +\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t + \else\let\nxt\egroup\fi\fi \nxt} +\def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup} +{\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math + +{\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_ + +\mathchardef\alpha="010B +\mathchardef\beta="010C +\mathchardef\gamma="010D +\mathchardef\delta="010E +\mathchardef\epsilon="010F +\mathchardef\zeta="0110 +\mathchardef\eta="0111 +\mathchardef\theta="0112 +\mathchardef\iota="0113 +\mathchardef\kappa="0114 +\mathchardef\lambda="0115 +\mathchardef\mu="0116 +\mathchardef\nu="0117 +\mathchardef\xi="0118 +\mathchardef\pi="0119 +\mathchardef\rho="011A +\mathchardef\sigma="011B +\mathchardef\tau="011C +\mathchardef\upsilon="011D +\mathchardef\phi="011E +\mathchardef\chi="011F +\mathchardef\psi="0120 +\mathchardef\omega="0121 +\mathchardef\varepsilon="0122 +\mathchardef\vartheta="0123 +\mathchardef\varpi="0124 +\mathchardef\varrho="0125 +\mathchardef\varsigma="0126 +\mathchardef\varphi="0127 +\mathchardef\Gamma="7000 +\mathchardef\Delta="7001 +\mathchardef\Theta="7002 +\mathchardef\Lambda="7003 +\mathchardef\Xi="7004 +\mathchardef\Pi="7005 +\mathchardef\Sigma="7006 +\mathchardef\Upsilon="7007 +\mathchardef\Phi="7008 +\mathchardef\Psi="7009 +\mathchardef\Omega="700A + +\mathchardef\aleph="0240 +\def\hbar{{\mathchar'26\mkern-9muh}} +\mathchardef\imath="017B +\mathchardef\jmath="017C +\mathchardef\ell="0160 +\mathchardef\wp="017D +\mathchardef\Re="023C +\mathchardef\Im="023D +\mathchardef\partial="0140 +\mathchardef\infty="0231 +\mathchardef\prime="0230 +\mathchardef\emptyset="023B +\mathchardef\nabla="0272 +\def\surd{{\mathchar"1270}} +\mathchardef\top="023E +\mathchardef\bot="023F +\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr + \not\mathrel{\mkern14mu}\crcr + \noalign{\nointerlineskip} + \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}} +\mathchardef\triangle="0234 +\mathchardef\forall="0238 +\mathchardef\exists="0239 +\mathchardef\neg="023A \let\lnot=\neg +\mathchardef\flat="015B +\mathchardef\natural="015C +\mathchardef\sharp="015D +\mathchardef\clubsuit="027C +\mathchardef\diamondsuit="027D +\mathchardef\heartsuit="027E +\mathchardef\spadesuit="027F + +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 + +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F + +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\def\neq{\not=} \let\ne=\neq +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\subset="321A +\mathchardef\supseteq="3213 +\mathchardef\subseteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B + +\def\joinrel{\mathrel{\mkern-3mu}} +\def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as + +\def\Relbar{\mathrel=} +\mathchardef\lhook="312C \def\hookrightarrow{\lhook\joinrel\rightarrow} +\mathchardef\rhook="312D \def\hookleftarrow{\leftarrow\joinrel\rhook} +\def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft} +\def\models{\mathrel|\joinrel=} +\def\Longrightarrow{\Relbar\joinrel\Rightarrow} +\def\longrightarrow{\relbar\joinrel\rightarrow} +\def\longleftarrow{\leftarrow\joinrel\relbar} +\def\Longleftarrow{\Leftarrow\joinrel\Relbar} +\def\longmapsto{\mapstochar\longrightarrow} +\def\longleftrightarrow{\leftarrow\joinrel\rightarrow} +\def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow} +\def\iff{\;\Longleftrightarrow\;} + +\mathchardef\ldotp="602E % ldot as a punctuation mark +\mathchardef\cdotp="6201 % cdot as a punctuation mark +\mathchardef\colon="603A % colon as a punctuation mark +\def\ldots{\mathinner{\ldotp\ldotp\ldotp}} +\def\cdots{\mathinner{\cdotp\cdotp\cdotp}} +\def\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@ + \kern6\p@\hbox{.}\hbox{.}\hbox{.}}} +\def\ddots{\mathinner{\mkern1mu\raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu + \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}} + +\def\acute{\mathaccent"7013 } +\def\grave{\mathaccent"7012 } +\def\ddot{\mathaccent"707F } +\def\tilde{\mathaccent"707E } +\def\bar{\mathaccent"7016 } +\def\breve{\mathaccent"7015 } +\def\check{\mathaccent"7014 } +\def\hat{\mathaccent"705E } +\def\vec{\mathaccent"017E } +\def\dot{\mathaccent"705F } +\def\widetilde{\mathaccent"0365 } +\def\widehat{\mathaccent"0362 } +\def\overrightarrow#1{\vbox{\ialign{##\crcr + \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}} +\def\overleftarrow#1{\vbox{\ialign{##\crcr + \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}} +\def\overbrace#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3\p@} + \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits} +\def\underbrace#1{\mathop{\vtop{\ialign{##\crcr + $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip} + \upbracefill\crcr\noalign{\kern3\p@}}}}\limits} +\def\skew#1#2#3{{#2{#3\mkern#1mu}\mkern-#1mu}{}} + +\def\lmoustache{\delimiter"4000340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"5000341 } % top from ), bottom from ( +\def\lgroup{\delimiter"400033A } % extensible ( with sharper tips +\def\rgroup{\delimiter"500033B } % extensible ) with sharper tips +\def\arrowvert{\delimiter"33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"33D } % double arrow without arrowheads +\def\bracevert{\delimiter"33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert +\def\vert{\delimiter"26A30C } +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } + +\def\bigl{\mathopen\big} +\def\bigm{\mathrel\big} +\def\bigr{\mathclose\big} +\def\Bigl{\mathopen\Big} +\def\Bigm{\mathrel\Big} +\def\Bigr{\mathclose\Big} +\def\biggl{\mathopen\bigg} +\def\biggm{\mathrel\bigg} +\def\biggr{\mathclose\bigg} +\def\Biggl{\mathopen\Bigg} +\def\Biggm{\mathrel\Bigg} +\def\Biggr{\mathclose\Bigg} +\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} +\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}} +\def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}} +\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}} +\def\n@space{\nulldelimiterspace\z@ \m@th} + +\def\choose{\atopwithdelims()} +\def\brack{\atopwithdelims[]} +\def\brace{\atopwithdelims\{\}} + +\def\sqrt{\radical"270370 } + +\def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}}% + {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}} +\newbox\rootbox +\def\root#1\of{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$} + \mathpalette\r@@t} +\def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$} + \dimen@\ht\z@ \advance\dimen@-\dp\z@ + \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu \box\z@} +\newif\ifv@ \newif\ifh@ +\def\vphantom{\v@true\h@false\ph@nt} +\def\hphantom{\v@false\h@true\ph@nt} +\def\phantom{\v@true\h@true\ph@nt} +\def\ph@nt{\ifmmode\def\next{\mathpalette\mathph@nt}% + \else\let\next\makeph@nt\fi\next} +\def\makeph@nt#1{\setbox\z@\hbox{#1}\finph@nt} +\def\mathph@nt#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt} +\def\finph@nt{\setbox\tw@\null + \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi + \ifh@ \wd\tw@\wd\z@\fi \box\tw@} +\def\mathstrut{\vphantom(} +\def\smash{\relax % \relax, in case this comes first in \halign + \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh + \fi\next} +\def\makesm@sh#1{\setbox\z@\hbox{#1}\finsm@sh} +\def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh} +\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@} + +\def\cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign +\def\@vereq#1#2{\lower.5\p@\vbox{\baselineskip\z@skip\lineskip-.5\p@ + \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}} +\def\notin{\mathrel{\mathpalette\c@ncel\in}} +\def\c@ncel#1#2{\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}} +\def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}} +\def\rlh@#1{\vcenter{\hbox{\ooalign{\raise2pt + \hbox{$#1\rightharpoonup$}\crcr + $#1\leftharpoondown$}}}} +\def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}} +\def\doteq{\buildrel\textstyle.\over=} + +\def\log{\mathop{\rm log}\nolimits} +\def\lg{\mathop{\rm lg}\nolimits} +\def\ln{\mathop{\rm ln}\nolimits} +\def\lim{\mathop{\rm lim}} +\def\limsup{\mathop{\rm lim\,sup}} +\def\liminf{\mathop{\rm lim\,inf}} +\def\sin{\mathop{\rm sin}\nolimits} +\def\arcsin{\mathop{\rm arcsin}\nolimits} +\def\sinh{\mathop{\rm sinh}\nolimits} +\def\cos{\mathop{\rm cos}\nolimits} +\def\arccos{\mathop{\rm arccos}\nolimits} +\def\cosh{\mathop{\rm cosh}\nolimits} +\def\tan{\mathop{\rm tan}\nolimits} +\def\arctan{\mathop{\rm arctan}\nolimits} +\def\tanh{\mathop{\rm tanh}\nolimits} +\def\cot{\mathop{\rm cot}\nolimits} +\def\coth{\mathop{\rm coth}\nolimits} +\def\sec{\mathop{\rm sec}\nolimits} +\def\csc{\mathop{\rm csc}\nolimits} +\def\max{\mathop{\rm max}} +\def\min{\mathop{\rm min}} +\def\sup{\mathop{\rm sup}} +\def\inf{\mathop{\rm inf}} +\def\arg{\mathop{\rm arg}\nolimits} +\def\ker{\mathop{\rm ker}\nolimits} +\def\dim{\mathop{\rm dim}\nolimits} +\def\hom{\mathop{\rm hom}\nolimits} +\def\det{\mathop{\rm det}} +\def\exp{\mathop{\rm exp}\nolimits} +\def\Pr{\mathop{\rm Pr}} +\def\gcd{\mathop{\rm gcd}} +\def\deg{\mathop{\rm deg}\nolimits} + +\def\bmod{\mskip-\medmuskip\mkern5mu + \mathbin{\rm mod}\penalty900\mkern5mu\mskip-\medmuskip} +\def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)} + +\def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th + \ialign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}\right.} +\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th + \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr + \mathstrut\crcr\noalign{\kern-\baselineskip} + #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,} +\def\pmatrix#1{\left(\matrix{#1}\right)} +\newdimen\p@renwd +\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left ( +\def\bordermatrix#1{\begingroup \m@th + \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}% + \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil + &&\quad\hfil$##$\hfil\crcr + \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}% + #1\crcr\omit\strut\cr}}% + \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne + \global\setbox\@ne\vbox{\box\@ne\kern2\p@}% + \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}% + \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup} + +\def\openup{\afterassignment\@penup\dimen@=} +\def\@penup{\advance\lineskip\dimen@ + \advance\baselineskip\dimen@ + \advance\lineskiplimit\dimen@} +\def\eqalign#1{\null\,\vcenter{\openup\jot\m@th + \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil + \crcr#1\crcr}}\,} +\newif\ifdt@p +\def\displ@y{\global\dt@ptrue\openup\jot\m@th + \everycr{\noalign{\ifdt@p \global\dt@pfalse + \vskip-\lineskiplimit \vskip\normallineskiplimit + \else \penalty\interdisplaylinepenalty \fi}}} +\def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y +\def\displaylines#1{\displ@y + \halign{\hbox to\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr + #1\crcr}} +\def\eqalignno#1{\displ@y \tabskip\centering + \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\llap{$\@lign##$}\tabskip\z@skip\crcr + #1\crcr}} +\def\leqalignno#1{\displ@y \tabskip\centering + \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr + #1\crcr}} + +% Definitions related to output + +\message{output routines,} + +\countdef\pageno=0 \pageno=1 % first page is number 1 +\newtoks\headline \headline={\hfil} % headline is normally blank +\newtoks\footline \footline={\hss\tenrm\folio\hss} + % footline is normally a centered page number in font \tenrm +\newif\ifr@ggedbottom +\def\raggedbottom{\topskip 10\p@ plus60\p@ \r@ggedbottomtrue} +\def\normalbottom{\topskip 10\p@ \r@ggedbottomfalse} % undoes \raggedbottom +\def\folio{\ifnum\pageno<\z@ \romannumeral-\pageno \else\number\pageno \fi} +\def\nopagenumbers{\footline{\hfil}} % blank out the footline +\def\advancepageno{\ifnum\pageno<\z@ \global\advance\pageno\m@ne + \else\global\advance\pageno\@ne \fi} % increase |pageno| + +\newinsert\footins +\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + #1\@sf\vfootnote{#1}} +\def\vfootnote#1{\insert\footins\bgroup + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip + \textindent{#1}\footstrut\futurelet\next\fo@t} +\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t + \else\let\next\f@t\fi \next} +\def\f@@t{\bgroup\aftergroup\@foot\let\next} +\def\f@t#1{#1\@foot} +\def\@foot{\strut\egroup} +\def\footstrut{\vbox to\splittopskip{}} +\skip\footins=\bigskipamount % space added when footnote is present +\count\footins=1000 % footnote magnification factor (1 to 1) +\dimen\footins=8in % maximum footnotes per page + +\newinsert\topins +\newif\ifp@ge \newif\if@mid +\def\topinsert{\@midfalse\p@gefalse\@ins} +\def\midinsert{\@midtrue\@ins} +\def\pageinsert{\@midfalse\p@getrue\@ins} +\skip\topins=\z@skip % no space added when a topinsert is present +\count\topins=1000 % magnification factor (1 to 1) +\dimen\topins=\maxdimen % no limit per page +\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup} % start a \vbox +\def\endinsert{\egroup % finish the \vbox + \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ + \advance\dimen@12\p@ \advance\dimen@\pagetotal + \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi + \if@mid \bigskip\box\z@\bigbreak + \else\insert\topins{\penalty100 % floating insertion + \splittopskip\z@skip + \splitmaxdepth\maxdimen \floatingpenalty\z@ + \ifp@ge \dimen@\dp\z@ + \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero + \else \box\z@\nobreak\bigskip\fi}\fi\endgroup} + +\output{\plainoutput} +\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}% + \advancepageno + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} +\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \pagecontents}} +\def\makeheadline{\vbox to\z@{\vskip-22.5\p@ + \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip} +\def\makefootline{\baselineskip24\p@\line{\the\footline}} +\def\dosupereject{\ifnum\insertpenalties>\z@ % something is being held over + \line{}\kern-\topskip\nobreak\vfill\supereject\fi} + +\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi + \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255 + \ifvoid\footins\else % footnote info is present + \vskip\skip\footins + \footnoterule + \unvbox\footins\fi + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} +\def\footnoterule{\kern-3\p@ + \hrule width 2truein \kern 2.6\p@} % the \hrule is .4pt high + +% Hyphenation, miscellaneous macros, and initial values for standard layout +\message{hyphenation} + + +\input hyphen + + +\def\magnification{\afterassignment\m@g\count@} +\def\m@g{\mag\count@ + \hsize6.5truein\vsize8.9truein\dimen\footins8truein} + +\def\tracingall{\tracingonline\@ne\tracingcommands\tw@\tracingstats\tw@ + \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne + \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne + \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode} + +\def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen\tenrm + \pretolerance\m@ne\tolerance\m@ne\hbadness0\showboxdepth0\ #1}} + +\normalbaselines\rm % select roman font +\frenchspacing % punctuation does not affect the spacing +\catcode`@=12 % at signs are no longer letters + +\def\fmtname{tplain}\def\fmtversion{0.9} % identifies the current format diff --git a/language/turkish/manifest b/language/turkish/manifest new file mode 100644 index 0000000000..16106d07d6 --- /dev/null +++ b/language/turkish/manifest @@ -0,0 +1,15 @@ +You should have all of these files before you start work on Turkish + + README + doc/ + TUGpap.tex turkish-hyphens.tex + hyphen/ + turk_hyf.c + inputs/ + hyphen.tex sample.tex tkccode.tex tplain.tex + mf/ + README accsub.mf aynhmz.mf tkaccl.mf tkaccu.mf tkacil.mf tkdotl.mf + tkdotu.mf tkdtil.mf tkital.mf tklig.mf tkpnct.mf tkroml.mf tksub.mf + turkce.mf turkit.mf wtkr10.mf wtkti10.mf + misc/ + wtkr10.pl wtkti10.pl diff --git a/language/turkish/mf/accsub.mf b/language/turkish/mf/accsub.mf new file mode 100644 index 0000000000..932c2a7b58 --- /dev/null +++ b/language/turkish/mf/accsub.mf @@ -0,0 +1,291 @@ +% This file contains macro definitions for accents common to text roman +% and italic fonts. It is directly derived from accent.mf, which is +% one of the standard Computer Modern Program files released by Donald +% Knuth in 1986. These accents are intended for pre-defined character +% and diacritical combinations in fonts derived from Computer Modern. + +% Written by P. A. MacKay, University of Washington + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Beta release (some accents not completely coded) 8 May, 1988 %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Accents are intended to be exact copies of the accents in the +% Computer Modern file accent.mf, with the following exceptions: +% 1. Bar accents are adjusted to the width of the associated letter. +% 2. The hat accent is pinched in to fit the letter i. +% 3. Acute and grave accents are rotated to whatever angle +% best suits the associated letter. (Especially for Upper Case.) +% 4. The under_h accent is based on an inverted tie accent. + +% No attempt is made to put the accent in the same position +% that it would occupy if \TeX\ put it in with the \accent primitive. +% Each accent has been adjusted for vertical and horizontal position +% position to best fit the associated letter. + +accsub:=1; % when |accsub| is known, this file has been input + +numeric xxxpr; xxxpr:=0; + +def Grave_accent (expr xxxpr) = +if serifs: pickup crisp.nib; x@_1-.5stem=hround 2u; x@_2=2/3[x@_1,w-x@_1]; + y@_1+.5stem=h+eps; y@_2=max(2/3[h,x_height],x_height+o+hair); + numeric theta; theta=angle(z@_2-z@_1)+90; + pos@_1(stem,theta); pos@_2(hair,theta); + filldraw circ_stroke z@_1e--z@_2e; % diagonal +else: pickup fine.nib; pos@_1(stem,0); pos@_2(vair,0); + lft x@_1l=hround 1.5u; rt x@_2r=hround(.5w+.25u+.5vair); + top y@_1=h; bot y@_2=vround 2/3[h,x_height]; + filldraw stroke z@_1e--z@_2e; fi % diagonal +penlabels(1,2); enddef; + +def Acute_accent (expr xxxpr) = +if serifs: pickup crisp.nib; x@_1+.5stem=hround(w-2u); x@_2=2/3[x@_1,w-x@_1]; + y@_1+.5stem=h+eps; y@_2=max(2/3[h,x_height],x_height+o+hair); + numeric theta; theta=angle(z@_2-z@_1)+90; + pos@_1(stem,theta); pos@_2(hair,theta); + filldraw circ_stroke z@_1e--z@_2e; % diagonal +else: pickup fine.nib; pos@_1(stem,0); pos@_2(vair,0); + rt x@_1r=hround(w-1.5u); lft x@_2l=hround(.5w-.25u-.5vair); + top y@_1=h; bot y@_2=vround 2/3[h,x_height]; + filldraw stroke z@_1e--z@_2e; fi % diagonal +penlabels(1,2); enddef; + +def Hachek_accent (expr xxxpr) = +if serifs: + pickup crisp.nib; pos@_2'(.5[vair,curve],90); top y@_2'r=h; + pos@_2(.5[vair,curve],90); x@_2=.5w; + x@_1=w-x@_3=good.x 2.25u; top y@_1=top y@_3=h; y@_1-y@_2=.5(y@_2'-x_height); + pos@_1(hair,angle(z@_2-z@_1)+90); pos@_3(hair,angle(z@_3-z@_2)+90); + filldraw stroke z@_1e--z@_2e--z@_3e; % diagonals +else: + pickup fine.nib; pos@_1(vair,0); pos@_3(vair,0); x@_1=w-x@_3; + pos@_2(stem,0); bot y@_2=vround(1/12[x_height,h']+o); x@_2=.5w; + top y@_1=top y@_3=h+o; lft x@_1l=hround(rt x@_2r-3.25u-.5vair); + z@_0=whatever[z@_1r,z@_2r]=whatever[z@_2l,z@_3l]; + y@_4l=y@_4r=y@_2; x@_4l=good.x .2[x@_2l,x@_2]; x@_4r=w-x@_4l; + filldraw z@_4l--z@_1l--z@_1r--z@_0--z@_3l--z@_3r--z@_4r--cycle; fi % diagonals +penlabels(0,1,2,3,4); enddef; + +def cup_accent (suffix $,@)(expr cY_shift) = +save @; +forsuffixes $$=@,@_: transform $$; endfor +pickup crisp.nib; pos@_1(vair,-180); pos@_3(vair,0); +top y@_1=top y@_3=asc_height; +rt x@_3r-x$=x$-lft x@_1r=2.5u+.5vair; +numeric mid_thickness; mid_thickness=vround 1/3[vair,stem]; +pos@_2(mid_thickness,-90); x@_2=.5[x@_1,x@_3]; +bot y@_2r=vround + max(x_height+o+tiny,1/3[x_height,asc_height]+o-.5mid_thickness); +@ = identity shifted(0,cY_shift); +for n = 1,2,3: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor +filldraw stroke z@1e{down}...z@2e{right}...{up}z@3e; % stroke +penlabels(@1,@2,@3); enddef; + +def bar_accent (suffix $,$$,@)(expr bH) = +numeric macron_breadth#; macron_breadth#=.2[vair#,stem#]; +numeric macron_breadth; macron_breadth:=Vround .2[vair,stem]; +pickup if serifs: crisp.nib else: fine.nib fi; +pos@1(macron_breadth,90); pos@2(macron_breadth,90); +top y@1r=top y@2r=if bH<0: bH + macron_breadth else: bH+o fi; +lft x@1=x$; rt x@2=x$$; +filldraw stroke z@1e--z@2e; % bar +penlabels(@1,@2); enddef; + +def circle_accent (expr xxxpr) = +numeric circ_hair,circ_vair; +circ_hair=hround min(hair,u+.5); circ_vair=vround min(vair,(h-x_height)/6+.5); +penpos@_1(circ_vair,90); penpos@_3(circ_vair,-90); +penpos@_2(circ_hair,180); penpos@_4(circ_hair,0); +x@_2r=hround(.5w-1.5u-.5circ_hair); +x@_4r=w-x@_2r; x@_1=x@_3=.5w; y@_1r=h+apex_o; y@_2=y@_4=.5[y@_1,y@_3]; +y@_3r=vround(1/3[x_height,h]+apex_o); +penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl +penlabels(1,2,3,4); enddef; + +def cedilla_accent (suffix $,@)(expr cD_shift) = +save @; +forsuffixes $$=@,@_: transform $$; endfor +if serifs: pickup crisp.nib; pos@_1(stem,0); pos@_2(stem,0); + pos@_3(vair,90); pos@_4(stem,0); pos@_5(vair,-90); + x@_1=x@_2=x$; z@_3l=z@_2l; x@_4=x@_2+1.5u; x@_5=x@_3-1.5u; + bot y@_1=-o; bot y@_2=-vround 2/7d-o; y@_4=.5[y@_3,y@_5]; bot y@_5=-d-o; + @ = identity shifted(0,cD_shift); + for n = 1,2,3,4,5: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor + filldraw stroke z@1e--z@2e; % stem + filldraw stroke z@3e{right}...z@4e{down}...{left}z@5e; % hook +else: pickup fine.nib; pos@_1(vair,0); top y@_1=-o-2; + pos@_2(.5[vair,stem],0); bot y@_2=-d-o; x@_1=x$; x@_2=x@_1-1.25u; + @ = identity shifted(0,cD_shift); + for n = 1,2: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor + filldraw stroke z@1e--z@2e; fi % diagonal +penlabels(@1,@2,@3,@4,@5); enddef; + +def cross_for_l (expr xxxpr) = +if unknown l_width#: + l_width#:=5u#+2serif_fit#; fi % nominal width of `l' +if unknown L_stem#: + L_stem#:=cap_serif_fit#+max(2u#+.5cap_stem#,3u#); fi % center of `L' stem +ligtable oct"040": "l" kern -l_width#-2letter_fit#, + "L" kern -.5l_width#-L_stem#-2letter_fit#; +pickup crisp.nib; x@_2-x@_1=max(4u,2.8u+stem); .5[x@_1,x@_2]=.5w; +y@_1-.5bar=.2[bar_height,x_height]; y@_2+.5bar=.8[bar_height,x_height]; +numeric theta; theta=angle(z@_2-z@_1)+90; +pos@_1(bar,theta); pos@_2(bar,theta); +filldraw stroke z@_1e--z@_2e; % diagonal +penlabels(1,2); enddef; + +% hat_accent. To get the same effect as the Computer modern character, +% set the first $ suffix to the center high-point of the character, +% For lower case characters whose "beginchar" height +% parameter is x_height, change this to asc_height, or a fraction +% of the distance from x_height to asc_height. Check through +% the character program to make sure that values of "h" are renamed +% "x_height". + +def hat_accent (suffix $,@)(expr hY_shift) = +save @; +forsuffixes $$=@,@_: transform $$; endfor +if serifs: + pickup crisp.nib; pos@_2(.5[vair,curve],90); + top y@_2r=min(asc_height,2x_height); x@_2=x$; + if w>6u: x@_3-x@_2=x@_2-x@_1=2.25u; + else: x@_3-x@_2=x@_2-x@_1=1.65u; fi % reshape over i + y@_1=y@_3=.5[x_height,y@_2]; + pos@_1(hair,angle(z@_2-z@_1)+90); pos@_3(hair,angle(z@_3-z@_2)+90); + @ = identity shifted(0,hY_shift); + for n = 1,2,3: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor + filldraw stroke z@1e--z@2e--z@3e; % diagonals +else: + pickup fine.nib; pos@_1(vair,0); pos@_3(vair,0); x@_1=w-x@_3; + pos@_2(stem,0); top y@_2=min(asc_height,2x_height); x@_2=x$; + bot y@_1=bot y@_3=vround 2/3[min(asc_height,2x_height),x_height]-eps; + if w>6u: + lft x@_1l=hround(rt x@_2r-3.25u-.5vair); % same slope as in the acute accent + else: + lft x@_1l=hround(rt x@_2r-2.25u-.5vair); fi % pinch it for i + z@_0=whatever[z@_1r,z@_2r]=whatever[z@_2l,z@_3l]; + y@_4l=y@_4r=y@_2; x@_4l=good.x .2[x@_2l,x@_2]; x@_4r=w-x@_4l; + @ = identity shifted(0,hY_shift); + for n = 0,1,2,3,4: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor + filldraw z@4l--z@1l--z@1r--z@0--z@3l--z@3r--z@4r--cycle; fi % diagonals +penlabels(@0,@1,@2,@3,@4); enddef; + +% This is a bit odd, owing to the fact that what we know is the +% position of the top of the dot, but what we want to position +% correctly is the bottom of the dot. For this reason, the shift +% value must be calculated (in the code for the associated letter) +% from the expected top pixel of the dot to the desired bottom +% edge of the dot. Then dot_span is added to correct the effect. +def dot_accent (suffix $,@) (expr dotY_shift)= +save @; +forsuffixes $$=@,@_: transform $$; endfor +numeric dh#; dh#:=min(asc_height#,10/7x_height#+.5dot_diam#); +define_whole_blacker_pixels(dh,dot_diam); +pickup tiny.nib; pos@_1(dot_diam,0); pos@_2(dot_diam,90); +x@_1=x@_2=x$; top y@_2r=dh+1; +if bot y@_2l<x_height+o+slab: y@_2l:=min(y@_2r-eps,x_height+o+slab+.5tiny); fi +y@_1=.5[y@_2l,y@_2r]; +numeric dot_span; dot_span=dh-bot y@_2l; +@ = identity if dotY_shift <> 0: shifted(0,dotY_shift+dot_span) fi; +for n = 1,2: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor +dot(@1,@2); % dot +penlabels(@1,@2); enddef; + +def dot_sharp_values = +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +numeric dot_top#; dot_top#=min(asc_height#,10/7x_height#+.5dot_diam#); +enddef; + +def Long_Hungarian_accent (expr xxxpr) = +x@_3-x@_1=x@_4-x@_2=hround 3u; y@_3=y@_1; y@_4=y@_2; +if serifs: pickup crisp.nib; x@_3+.5stem=hround(w-1.5u); x@_2=2.5u; + y@_1+.5stem=h; y@_2=max(2/3[h,x_height],x_height+o+hair); + numeric theta; theta=angle(z@_2-z@_1)+90; + pos@_1(stem,theta); pos@_2(hair,theta); + pos@_3(stem,theta); pos@_4(hair,theta); + filldraw circ_stroke z@_1e--z@_2e; % left diagonal + filldraw circ_stroke z@_3e--z@_4e; % right diagonal +else: pickup fine.nib; pos@_1(stem,0); pos@_2(vair,0); + pos@_3(stem,0); pos@_4(vair,0); + rt x@_3r=hround(w-1.5u); lft x@_4l=hround(.5w+u-.5vair); + top y@_1=h; bot y@_2=vround 2/3[h,x_height]; + filldraw stroke z@_1e--z@_2e; % left diagonal + filldraw stroke z@_3e--z@_4e; fi % right diagonal +penlabels(1,2,3,4); enddef; + +def tilde_accent (suffix $,@)(expr tY_shift) = +save @; +forsuffixes $$=@,@_: transform $$; endfor +if serifs: numeric theta; theta=angle(1/6(6u-vair),1/4(asc_height-x_height)); + pickup crisp.nib; numeric mid_width; mid_width=.4[vair,stem]; + pos@_1(vair,theta+90); pos@_2(vair,theta+90); + pos@_3(vair,theta+90); pos@_4(vair,theta+90); + z@_2-z@_1=z@_4-z@_3=(mid_width-crisp)*dir theta; + rt x@_4l-x$=x$-lft x@_1r=3u; top y@_4r=asc_height; + bot y@_1l=vround(bot y@_1l+min(2/3[x_height,asc_height],y@_3l-.25vair)-top y@_1r); + pair delta; ypart delta=3(y@_3l-y@_1l); delta=whatever*dir theta; + @ = identity shifted(0,tY_shift); + for n = 1,2,3,4: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor + filldraw z@1l..controls(z@1l+delta)and(z@3l-delta)..z@3l..z@4l + --z@4r..controls(z@4r-delta)and(z@2r+delta)..z@2r..z@1r--cycle; % stroke +else: pickup fine.nib; pos@_1(vair,180); pos@_2(vair,90); + pos@_3(.5[vair,slab],90); pos@_4(vair,90); pos@_5(vair,180); + rt x@_5l-x$=x$-lft x@_1r=3u; x@_2-x@_1=x@_3-x@_2=x@_4-x@_3=x@_5-x@_4; + bot y@_1=bot y@_4l=vround(.75[x_height,asc_height]-vair); + top y@_2r=top y@_5=asc_height; y@_3=.5[y@_2,y@_4]; + @ = identity shifted(0,tY_shift); + for n = 1,2,3,4,5: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor + filldraw stroke z@1e{up}...z@2e{right}..z@3e..{right}z@4e...{up}z@5e; fi % stroke +penlabels(@1,@2,@3,@4,@5); enddef; + +def cap_tilde (suffix $,@)(expr tW) = +save @; +forsuffixes $$=@,@_: transform $$; endfor +pickup crisp.nib; +numeric theta,tmp_h; +tmp_h=.5[asc_height,body_height]; +theta=angle(1/6(tW-vair),1/4(tmp_h-x_height)); +numeric mid_width; mid_width=.4[vair,stem]; +pos@_1(vair,theta+90); pos@_2(vair,theta+90); +pos@_3(vair,theta+90); pos@_4(vair,theta+90); +z@_2-z@_1=z@_4-z@_3=(mid_width-crisp)*dir theta; +w-rt x@_4l=lft x@_1r=.5w-.5tW; top y@_4r=.5[asc_height,body_height]; +bot y@_1l=vround(bot y@_1l+min(2/3[x_height,tmp_h],y@_3l-.25vair)-top y@_1r); +pair delta; ypart delta=3(y@_3l-y@_1l); delta=whatever*dir theta; +@ = identity shifted(0,if dish > 0: y@_4r-y@_1l else: 2(y@_4r-y@_1l) fi); +for n = 1,2,3,4,5: forsuffixes e = l,,r: + z@[n]e = z@_[n]e transformed @; endfor endfor +filldraw z@1l..controls(z@1l+delta)and(z@3l-delta)..z@3l..z@4l + --z@4r..controls(z@4r-delta)and(z@2r+delta)..z@2r..z@1r--cycle; % stroke +penlabels(@1,@2,@3,@4); enddef; + +def double_dot_accent (expr xxxpr) = +numeric dot_diam#,dot_diam; +dot_diam#=max(dot_size#,cap_curve#); +dot_diam=max(tiny.breadth,hround(max(dot_size,cap_curve)-2stem_corr)); +pickup tiny.nib; pos@_1(dot_diam,0); pos@_2(dot_diam,90); +x@_1=x@_2=2.75u; top y@_2r=h+1; +if bot y@_2l<x_height+o+slab: y@_2l:=min(y@_2r-eps,x_height+o+slab+.5tiny); fi +y@_1=.5[y@_2l,y@_2r]; dot(1,2); % left dot +pos@_3(dot_diam,0); penpos@_4(y@_2r-y@_2l,90); y@_3=y@_4=y@_1; x@_3=x@_4=w-x@_1; +dot(3,4); % right dot +penlabels(1,2,3,4); enddef; + +def under_h_accent (suffix $,$$,@) = +pickup fine.nib; pos@1(hair,180); pos@2(vround 1/3[vair,stem],270); pos@3(hair,0); +lft x@1r=x$; x@2=.5[x@1,x@3]; +rt x@3r=x$$; +y@1=y@3=vround(-fine-1); bot y@2r=vround (y@1-4/9desc_depth); +filldraw stroke super_arc.e(@1,@2) & super_arc.e(@2,@3); % arc +penlabels(@1,@2,@3); enddef; + diff --git a/language/turkish/mf/aynhmz.mf b/language/turkish/mf/aynhmz.mf new file mode 100644 index 0000000000..efbf569bd7 --- /dev/null +++ b/language/turkish/mf/aynhmz.mf @@ -0,0 +1,48 @@ +% Ayn and Hamza (smooth and rough breathing) for Computer Modern +% These letters were originally coded by P. A. MacKay in December, 1986, + +% Ayn and Hamza are based on the comma supplied in {\tt cmbase.mf}, +% but the jut is increased, the tail is tucked in more tightly, and the +% bulb is uppermost in both cases. Ayn is NOT the mirror image of Hamza in +% slanted or italic fonts, thanks to a little magic with |currenttransform|. + +% Character codes \0043 and \0100 are generated. + +% if |izafet_dot| is known, character \0175 (dot at |bar_height|) is generated +if unknown accsub: input accsub fi % needed for |izafet_dot| + +newinternal pslant,nslant; pslant:=slant; nslant:=-slant; + +cmchar "Rough breathing or `Ayn"; +beginchar(oct"043",5u#,min(asc_height#,10/7x_height#),0); % height of i-dot +italcorr asc_height#*slant+.5dot_size#-2u#; +adjust_fit(0,0); +currenttransform:=identity slanted nslant + yscaled aspect_ratio scaled granularity; % build italic with reverse slant +x1-.325dot_size=hround(.5w-.325dot_size); y1+.325dot_size=h; % smaller bulb +if monospace: comma(1,a,.65dot_size,.35u,vround .85comma_depth); % large comma +else: comma(1,a,.65dot_size,1.6u,.85comma_depth); fi % comma; increased jut +currentpicture:=currentpicture reflectedabout ((.5[l,r],h),(.5[l,r],0)); +currenttransform:=identity slanted pslant + yscaled aspect_ratio scaled granularity; % restore normal font slant +penlabels(1); endchar; + +cmchar "Smooth breathing or Hamza"; +beginchar(oct"100",5u#,min(asc_height#,10/7x_height#),0); % height of i-dot +italcorr asc_height#*slant+.5dot_size#-2u#; +adjust_fit(0,0); +x1-.325dot_size=hround(.5w-.325dot_size); y1+.325dot_size=h; % smaller bulb +if monospace: comma(1,a,.65dot_size,.35u,vround .85comma_depth); % large comma +else: comma(1,a,.65dot_size,1.6u,.85comma_depth); fi % comma; increased jut +penlabels(1); endchar; + +iff known izafet_dot: cmchar "Period raised to bar height"; +dot_sharp_values; +beginchar(izafet_dot,4.5u#,x_height#,0); +adjust_fit(0,0); pickup fine.nib; +define_whole_blacker_pixels(dot_diam); +pos1(dot_diam,0); pos2(dot_diam,90); +lft x1l=hround(.5w-.5dot_diam); +y1+.5dot_diam=vround(bar_height+.5dot_diam); +z1=z2; dot(1,2); penlabels(1,2); endchar; + diff --git a/language/turkish/mf/readme b/language/turkish/mf/readme new file mode 100644 index 0000000000..540b416103 --- /dev/null +++ b/language/turkish/mf/readme @@ -0,0 +1,19 @@ +Only the uniquely Turkish mf files are included here. Many of the +standard computer modern character description files are used, such +as romanu.mf and romand.mf. These should be linked or copied into +this directory before running METAFONT. + + +wtkr10.mf and wtkti10.mf are supplied for regular serifed and italic +text. Other text faces can be made up on the model of these two. +A reasonable number of tests has been made on typewriter and sans serif +versions, but no real refinement has been attempted + +For further information: + +Email: mackay@june.cs.washington.edu Pierre A. MacKay +Smail: Northwest Computing Support Group TUG Site Coordinator for + Lewis Hall, Mail Stop DW10 Unix-flavored TeX + University of Washington + Seattle, WA 98195 + (206) 543-6259 diff --git a/language/turkish/mf/tkaccl.mf b/language/turkish/mf/tkaccl.mf new file mode 100644 index 0000000000..fb0033e9d2 --- /dev/null +++ b/language/turkish/mf/tkaccl.mf @@ -0,0 +1,454 @@ +% Accented Turkish based on Computer Modern Roman lower case: +% These letters were originally coded by D. E. Knuth in November, 1979, +% inspired by the Monotype faces used in {\sl The Art of Computer Programming}. +% Sans serif designs by Richard Southall were added in April, 1982. +% The programs were revised for the new \MF\ conventions in 1985. + +% Accents added by P. A. MacKay in December, 1986. + +% Accents are intended to be exact copies of the accents in the +% Computer Modern file accent.mf, with the following exceptions: +% 1. Bar accents are adjusted to the width of the associated letter. +% 2. The hat accent is pinched in to fit the letter i. +% 3. Acute and grave accents are rotated to whatever angle +% best suits the letter associated letter. +% 4. The under_h accent is based on an inverted tie accent. + +% No attempt is made to put the accent in the same position +% that it would occupy if \TeX\ put it in with the \accent primitive. +% Each accent has been adjusted for vertical and horizontal position +% position to best fit the associated letter. + +% Character codes \0033--\0037, \0053, \0074--\0076, \0176 and \0177 +% are generated. +% Character \0040 is generated |iff not monospace|. + +if unknown accsub: input accsub fi + +cmchar "The letter hatted a"; +beginchar(oct "074",9u#,if serifs: if .5(asc_height#-x_height#)>1.5stem#: + .8[x_height#,asc_height#] else:asc_height# fi + else:asc_height# fi, 0); +bh#:=min(bar_height#,1.14x_height#-bar_height#); define_pixels(bh); +italcorr 2/3[x_height#,asc_height#]*slant+.5stem#-serif_fit#-if serifs: 3 fi u#; +adjust_fit(0,serif_fit# if serifs: if hair#+.5stem#>1.5u#:-.25u# fi\\fi); +pickup fine.nib; top y3r=x_height+vround 1.5oo; +if serifs: pos1(flare,180); pos2(hair,180); + pos3(vair,90); lft x1r=hround max(u,2.1u-.5flare); x3=.5w-.5u; + y1=min(bh+.5flare+2vair+2,.9[bh,x_height]-.5flare); + bulb(3,2,1); % bulb +else: pos1(5/7[vair,flare],95); x1l=good.x 1.5u; x1r:=good.x x1r; + pos3(1/8[vair,thin_join],90); + x3=.5w-.2u; top y1r=vround .82[bh,top y3r]; + filldraw stroke term.e(3,1,left,.9,4); fi % terminal +pos4(stem,0); rt x4r=hround(w-2.5u+.5stem); y4=1/3[bh,x_height]; +pos5(stem,0); x5=x4; y5=max(.55bh,2vair); +filldraw stroke super_arc.e(3,4)&z4e..z5e; % arc and stem +pos6(.3[thin_join,vair],90); x6=x4; bot y6=bh; +pos7(hround(curve-2stem_corr),180); +lft x7r=hround max(.5u,1.5u-.5curve); y7=1/3[top y8l,top y6r]; +pos8(vair,270); x8l=.5w-.75u; bot y8r=-oo; +pos9(thin_join,360); z9l=z5l; +(x,y8r)=whatever[z8l,z9l]; x8r:=max(x,x8-u); +{{interim superness:=more_super; + filldraw stroke z9e{down}...z8e{left}...{up}z7e&super_arc.e(7,6)}}; % bowl +if serifs: numeric shaved_stem; shaved_stem=hround(stem-3stem_corr); + if hair#+.5stem#>1.5u#: pickup tiny.nib; + pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; + pos10(shaved_stem,0); x10=x5'; y10=.2[.5tiny,bh]; + pos11(shaved_stem,0); rt x11r=hround(w-.25u); bot y11=0; + pos12(shaved_stem,0); x11=x12; top y12=slab+eps; + filldraw z5'l---z10l...z11l{right}--z11r + --z12r{left}...z10r+.75(z12-z11)---z5'r--cycle; % foot + else: pickup crisp.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; + pos10(shaved_stem,0); x10=x5'; y10=1/3bh; + pos11(.2[vair,stem],90); x11r=.5[x10r,x12r]; bot y11l=-vround .5oo; + pos12(hair,180); rt x12l=hround(w-.1u); y12=max(y10,y11+vair); + pos13(hair,180); x13=x12; top y13=max(vround .6bh,top y12); + (x',y11l)=whatever[z11r,z12r]; x11l:=max(x',x10); + filldraw stroke z5'e---z10e...z11e{right}...z12e---z13e; fi % hook +else: numeric shaved_stem; shaved_stem=hround(stem-stem_corr); + pickup tiny.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; + pos10(shaved_stem,0); x10=x5'; bot y10=0; + filldraw stroke z5'e--z10e; fi % base of stem +numeric hat_shift; if h<asc_height:hat_shift=-.2(asc_height-x_height); + else:hat_shift=0; fi +hat_accent(3,a,hat_shift); +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar; + +cmchar "The letter chim"; +beginchar(oct "033",8u#,x_height#,.875desc_depth#); +italcorr x_height#*slant-.2u#; +adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); +pickup fine.nib; pos2(vair',90); pos4(vair',270); +x2=x4=.5(w+u); top y2r=vround(h+1.5oo); bot y4r=-oo; +pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5h; +if serifs: pos1(hair,0); pos0(flare,0); + y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare); + rt x1r=hround(w-.7u); bulb(2,1,0); % bulb + pos5(hair,0); rt x5r=hround(w-.5u); + y5=max(good.y(.5bar_height-.9),y4l+vair'); + (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u); + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) + ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal +else: pos1(4/7[vair',flare],80); + rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r]; + filldraw stroke term.e(2,1,right,.8,4); % upper terminal + pos5(.6[vair',flare],275); rt x5r=hround(w-.5u); + y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; + forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e; + if angle direction 1 of p.e>75: + p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal +cedilla_accent(4,a,o if serifs: -crisp fi); +penlabels(0,1,2,3,4,5); endchar; + +cmchar "The letter dhal"; +beginchar(oct "034",10u#+serif_fit#,asc_height#,.6desc_depth#); +italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(0,serif_fit#); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; +rt x1r=hround(w-2.5u+.5stem'); top y1=h; +numeric edge; edge=lft x2l; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); +pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); +lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),1/3[lft x2,edge]); +y3=1/8[bar_height,x_height]; +x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; +lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=-oo; +x7=x3; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); +filldraw stroke z3e{up}...pulled_arc.e(4,5) + & pulled_arc.e(5,6)...{up}z7e; % bowl +y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{left}z4l)); +pickup tiny.nib; bot y2=if serifs:-min(oo,serif_drop) else: 0 fi; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif + sloped_serif.r(2,0,b,1/3,jut,min(oo,serif_drop)); fi % lower serif +bar_accent(5,3,c,-8/9desc_depth); +penlabels(0,1,2,3,4,5,6,7); endchar; + +% cupped g. This is fairly straightforward, except for the +% lengthy calculation of cup_shift. To understand that, you must +% look at the dimension calculations and use of mid_thickness +% in Breve accent in accent.mf. No change to italic correction, +% because right horn of cup will always fall to left of hook of g. + +iff not variant_g: cmchar "The letter cupped g"; +beginchar(oct "035",9u#,min(asc_height#,2x_height#),desc_depth#); +italcorr x_height#*slant+.25u#; +adjust_fit(0,0); +numeric light_vair,light_curve,loop_top,loop_side; +light_vair=Vround(.5[thin_join,vair]+vair_corr); +light_curve=max(fine.breadth,hround(curve-3stem_corr)); +loop_top=Vround .77[vair,fudged.stem]; +loop_side=hround .64[vair,fudged.stem]; +pickup fine.nib; pos1(light_vair,90); +pos2(light_curve,180); pos3(light_vair,270); +pos4(light_curve,360); pos11(loop_top,90); +y11r=good.y(y11r+.15bar_height-y11); x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3]; +lft x2r=hround(1.75u-.5light_curve); rt x4r=hround(w-2.75u+.5light_curve); +top y1r=x_height+oo; y3r=good.y(y3r+.27[top y11r,bot y1l]-y3); +filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3); % left half of bowl +filldraw stroke pulled_arc.e(3,4) & pulled_arc.e(4,1); % right half of bowl +x0=superness[x1r,x4r]; y0=superness[y4r,y1r]; % NE point on the super bowl +x8'=superness[x3r,x2r]; y8'=superness[y2r,y3r]; % SW point on the super bowl +x8''=superness[x3,x2]; y8''=superness[y2,y3]; +pos0(thin_join,angle(z0-z8')+90); +pos8(thin_join,angle(z0-z8')-90); z8=.618[z8',z8'']; +if serifs: pos5(vair,90); + pos6(hair,0); pos7(.5[hair,flare],0); x5=.75[x0,x6]; top y5r=x_height+o; + rt x6r=hround(w-.25u); y6+(.5[hair,flare])/2=.95[bar_height,x_height]+oo; + filldraw stroke z0e..{right}z5e; bulb(5,6,7); % ear +else: pos5(vair',100); top y5r=x_height+oo; + rt x5l=hround(w-.25u); y5l:=good.y y5l; + filldraw z0l{z5-z0}..z5l--z5r{left}..{curl 1}z0r--cycle; fi % ear +pos10(loop_top,90); x10=x8+.75u; y10=y11; +pos12(loop_side,0); pos13(light_vair,-90); +pos14(loop_side,-180); pos10'(.5[thin_join,vair],-270); +rt x12r=hround max(w-1.25u+.5loop_side,w-.5u); y12=y14=.5[y11,y13]; +x11=x13=max(.5w,x10+eps); bot y13r=-d-oo-1; x14=w-x12; z10'l=z10l; +filldraw stroke z8e{z8-z0}..z10e---z11e; % link +filldraw stroke {{interim superness:=hein_super; super_arc.e(11,12)}} + & super_arc.e(12,13) & super_arc.e(13,14) & super_arc.e(14,10'); % loop +numeric cup_shift; cup_shift= + x_height+slab-max(x_height+o+tiny,1/3[x_height,asc_height]+o-vround 1/6[vair,stem]); +if cup_shift>0:cup_shift:=0; fi +cup_accent(1,c,cup_shift); +penlabels(0,1,2,3,4,5,6,7,8,10,11,12,13,14); labels(8',8''); endchar; + +iff variant_g: cmchar "Variant cupped g"; +beginchar(oct "035",10u#+serif_fit#,.8[x_height#,asc_height#],desc_depth#); +italcorr .8[x_height#,asc_height#]*slant-serif_fit#+.5stem#-2u# if serifs: -.5u# fi; +adjust_fit(0,serif_fit# if serifs: -.5u# fi); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; +rt x1r=hround(w-2.5u+.5stem'); +numeric edge; edge=lft x2l; +path edge_path; edge_path=(edge,x_height)--(edge,0); +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); +pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); +lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height; +x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; +lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=vround 1/3vair; +lft x7l=edge; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); +filldraw stroke z3e{up}...{left}z4e&super_arc.e(4,5) + &super_arc.e(5,6)&z6e{right}...{up}z7e; % bowl +y1=ypart(edge_path intersectionpoint(z3l{up}...{left}z4l)); +y0=ypart(edge_path intersectionpoint(z7l{down}...{left}z6l)); +pickup tiny.nib; bot y2=if serifs: -.25d else: 0 fi; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; +pos8(hround(hair-stem_corr),0); pos7'(stem',0); +z7'=z1; x8r=x7'r; top y8=x_height+oo; +filldraw stroke z7'e--z8e; % point +if serifs: pickup tiny.nib; + pos9(vair,-90); x9=.5[x2,x10]; bot y9r=-d-o-1; + pos10(hair,-180); lft x10r=hround u; y10=-.75d+.5flare; + pos11(flare,-180); z11r=z10r; + bulb(9,10,11); filldraw stroke super_arc.e(2,9); % tail +else: pickup fine.nib; pos2'(stem,0); z2'=z2; + z2''r=z2'r; z2''=z2'; z2''l=(x2'l,0); + pos9(vair,-90); x9=4.5u; bot y9r=-d-o-1; + pos10(.5[vair,flare],-90); lft x10=hround 1.25u; + y10r=good.y -5/6d; y10l:=good.y y10l; + filldraw stroke z2'e..z2''e&super_arc.e(2'',9) + & term.e(9,10,left,.9,4); fi % tail +numeric cup_shift; cup_shift= + x_height+slab-max(x_height+o+tiny,1/3[x_height,asc_height]+o-vround 1/6[vair,stem]); +if cup_shift>0:cup_shift:=0; fi +cup_accent(4r,c,cup_shift); +penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar; + +cmchar "The letter kha"; +beginchar(oct "036",10u#,asc_height#,.6desc_depth#); +italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +pos1'(stem',0); pos2'(stem',0); pos3(stem,0); +lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1; +top y1=h; bot y2=0; y1=y1'; y2=y2'; +filldraw stroke z1'e--z2'e; % left stem +h_stroke(2,a,3,4); % arch and right stem +if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif + numeric inner_jut; pickup tiny.nib; + if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; + else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi + dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif + dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif +if dish>0: under_h_accent(2,4,k); +else: bar_accent(2,4,k,-8/9desc_depth); fi +penlabels(1,2,3,4); endchar; + +cmchar "The letter hatted i"; +beginchar(oct"075",5u#,if serifs: if .5(asc_height#-x_height#)>1.5stem#: + .8[x_height#,asc_height#] else:asc_height# fi + else:asc_height# fi, 0); +italcorr if serifs: asc_height#*slant-serif_fit#+.5stem#-2u#; + else: asc_height#*slant+.5stem#; fi +adjust_fit(serif_fit#+stem_shift# if monospace:+.25u#fi,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem',0); pos2(stem',0); +if odd(w-stem'): change_width; fi +lft x1l=hround(.5w-.5stem'); x1=x2; +top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=0; +filldraw stroke z1e--z2e; % stem +if serifs: sloped_serif.l(1,2,a,1/3,.95jut,serif_drop); % upper serif + dish_serif(2,1,b,1/3,jut,c,1/3,.9jut); fi % lower serif +numeric hat_shift; if h<asc_height:hat_shift=-.2(asc_height-x_height); + else:hat_shift=0; fi +hat_accent(1,d,hat_shift); +penlabels(1,2); endchar; + +cmchar "The letter gnaf"; +beginchar(oct "037",10u#,if serifs: if .5(asc_height#-x_height#)>1.5stem#: + .8[x_height#,asc_height#] else:asc_height# fi + else:asc_height# fi, 0); +italcorr .8[x_height#,asc_height#]*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +numeric shaved_stem; shaved_stem=hround(stem-2stem_corr); +pos1'(shaved_stem,0); pos2'(shaved_stem,0); pos3(stem,0); +lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1; +top y1=x_height+min(oo,serif_drop); bot y2=0; y1=y1'; y2=y2'; +filldraw stroke z1'e--z2'e; % left stem +h_stroke(2,a,3,4); % arch and right stem +if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif + numeric inner_jut; pickup tiny.nib; + if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; + else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi + dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif + dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif +numeric tilde_shift; if h<asc_height:tilde_shift=-.3(asc_height-x_height); + else:tilde_shift=0; fi +x5=hround .5w; +tilde_accent(5,t,tilde_shift); +penlabels(1,2,3,4); endchar; + +iff not monospace: cmchar "The letter hatted o"; +beginchar(oct "040",9u#,if serifs: if .5(asc_height#-x_height#)>1.5stem#: + .8[x_height#,asc_height#] else:asc_height# fi + else:asc_height# fi, 0); +italcorr 1/3[x_height#,asc_height#]*slant-.5u# if serifs: - stem# fi; +adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); +penpos1(vair,90); penpos3(vair',-90); +penpos2(curve,180); penpos4(curve,0); +x2r=hround max(.5u,1.25u-.5curve); +x4r=w-x2r; x1=x3=.5w; y1r=x_height+vround 1.5oo; y3r=-oo; +y2=y4=.5x_height-vair_corr; y2l:=y4l:=.52x_height; +penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl +numeric hat_shift; if h<asc_height:hat_shift=-.2(asc_height-x_height); + else:hat_shift=0; fi +hat_accent(1,a,hat_shift); +penlabels(1,2,3,4); endchar; + +cmchar "The letter shin"; +beginchar(oct "053",7.1u#,x_height#,.875desc_depth#); +italcorr x_height#*slant-if serifs:.55u# else:.3u# fi; +adjust_fit(if monospace: .5u#,.4u# else: 0,if serifs:0 else:-.2u# fi fi); +numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle +numeric s_slab; s_slab=if serifs:vair else:Vround .1[vair,stem] fi; +numeric ess'; ess'=max(fine.breadth,ess); +pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-100); +pos0(ess',theta); pos7(s_slab,-90); x2l=x0=x7=.5w; +top y2l=h+vround 1.5oo; bot y7r=-oo; +y0-.5ess'=y7l+if serifs:.54 else: .52 fi\\(y2r-y7l-ess'); +lft x3l=hround .6u; rt x6r=hround(w-.6u); +x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +interim superness:=more_super; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +if serifs: pos1(hair,180); pos8(hair,180); + rt x1l=hround(w-1.05u); lft x8r=hround .6u; + bot y1=min(bot y2r,vround 1/5[top y5r,h]); + top y8=max(top y7l,vround 5/6 bot y4l); + filldraw stroke z1e{up}....{left}z2e; % upper arc + filldraw stroke z7e{left}....{x8-x7,5(y8-y7)}z8e; % lower arc + path upper_arc, lower_arc; + upper_arc=z1{up}....{left}z2; lower_arc=z7{left}....{x8-x7,5(y8-y7)}z8; + pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0); + x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; + x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; + numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); + filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb + t:=xpart(lower_arc intersectiontimes(z9r--z8')); + filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb +else: pos1(4/7[s_slab,flare],-100); pos8(flare,-100); + x1l=good.x(x1l+w-u-rt x1); lft x8r=hround .5u; + top y1l=vround(.93h+1.5oo); bot y8r=vround .1h-oo; + filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal + filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal +cedilla_accent(7,c,o if serifs: -crisp fi); +penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar; + +cmchar "The letter tha"; +beginchar(oct "0176",7.1u#,x_height#,.6desc_depth#); +italcorr x_height#*slant-if serifs:.55u# else:.3u# fi; +adjust_fit(if monospace: .5u#,.4u# else: 0,if serifs:0 else:-.2u# fi fi); +numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle +numeric s_slab; s_slab=if serifs:vair else:Vround .1[vair,stem] fi; +numeric ess'; ess'=max(fine.breadth,ess); +pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-100); +pos0(ess',theta); pos7(s_slab,-90); x2l=x0=x7=.5w; +top y2l=h+vround 1.5oo; bot y7r=-oo; +y0-.5ess'=y7l+if serifs:.54 else: .52 fi\\(y2r-y7l-ess'); +lft x3l=hround .6u; rt x6r=hround(w-.6u); +x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +interim superness:=more_super; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +if serifs: pos1(hair,180); pos8(hair,180); + rt x1l=hround(w-1.05u); lft x8r=hround .6u; + bot y1=min(bot y2r,vround 1/5[top y5r,h]); + top y8=max(top y7l,vround 5/6 bot y4l); + filldraw stroke z1e{up}....{left}z2e; % upper arc + filldraw stroke z7e{left}....{x8-x7,5(y8-y7)}z8e; % lower arc + path upper_arc, lower_arc; + upper_arc=z1{up}....{left}z2; lower_arc=z7{left}....{x8-x7,5(y8-y7)}z8; + pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0); + x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; + x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; + numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); + filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb + t:=xpart(lower_arc intersectiontimes(z9r--z8')); + filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb +else: pos1(4/7[s_slab,flare],-100); pos8(flare,-100); + x1l=good.x(x1l+w-u-rt x1); lft x8r=hround .5u; + top y1l=vround(.93h+1.5oo); bot y8r=vround .1h-oo; + filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal + filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal +x11=1.25u; x12=w-x11; +bar_accent(11,12,a,-8/9desc_depth); +penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10,11,12); endchar; + +cmchar "The letter hatted u"; +beginchar(oct"076",10u#,if serifs: if .5(asc_height#-x_height#)>1.5stem#: + .8[x_height#,asc_height#] else:asc_height# fi + else:asc_height# fi, 0); +italcorr 1/3[x_height#,asc_height#]*slant-.5u# if serifs: - stem# fi; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +numeric light_vair; light_vair=vair if hefty: -vround 2vair_corr fi; +if light_vair<fine.breadth: light_vair:=fine.breadth; fi +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +pos3(stem,0); pos4(stem',0); +lft x1l=hround(2.5u-.5stem); x1=x2; x3=w-x1; x3r=x4r; +if serifs: top y1=x_height+min(oo,serif_drop); bot y4=-min(oo,serif_drop); +else: top y1=x_height; bot y4=0; fi +pos0(stem,0); pos0'(stem',0); x0=x3; x0'=x4; y0=y0'; +penpos2'(stem-fine,-180); z2'=z2; y3=y1; y2=.5bar_height; +penpos5(max(eps,light_vair-fine),-90); penpos6(thin_join-fine,0); +y6=y0=2/3bar_height; +filldraw stroke z1e--z2e; % left stem +filldraw stroke z3e..z0e--z0'e..z4e; % right stem +pickup fine.nib; bot y5r=-oo; x5l=.5w-.25u; lft x6l=tiny.lft x0l; +(x,y5r)=whatever[z5l,z6l]; x5r:=max(x,.5[x5,x2'r]); +filldraw stroke {{interim superness:=hein_super; + pulled_arc.e(2',5)}} & z5e{right}...{up}z6e; % arc +if serifs: sloped_serif.l(1,2,a,1/3,jut,serif_drop); % upper left serif + sloped_serif.l(3,0,b,1/3,jut,serif_drop); % upper right serif + sloped_serif.r(4,0',c,1/3,jut,min(oo,serif_drop)); fi % lower right serif +x7=.5w; +numeric hat_shift; if h<asc_height:hat_shift=-.2(asc_height-x_height); + else:hat_shift=0; fi +hat_accent(7,g,hat_shift); +penlabels(1,2,3,4,5); labels(6); endchar; + +cmchar "The letter zal"; +beginchar(oct "0177",8u#,x_height#,.6desc_depth#); +italcorr x_height#*slant-.5serif_fit#-.3u#; +adjust_fit(0,.5serif_fit#); +numeric arm_thickness[],z_stem; +if hefty: arm_thickness1=Vround(vair-vair_corr); arm_thickness2=vair; + z_stem=.6[vair,stem]; +else: arm_thickness1=vair; arm_thickness2=vair'; z_stem=.9[vair,stem]; fi +pickup tiny.nib; rt x1r=rt x2r=hround(w-.8u); lft x3l=lft x4l=hround .5u; +top y1=h; y2=min(y1,h-2/3arm_thickness1); +bot y4=0; y3=max(y4,2/3arm_thickness2); +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3)); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z2 of currentpen; +fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l + ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r + ---cycle; % diagonal +pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180); +top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps; +arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak +pos7(arm_thickness2,-90); pos8(hair,0); +bot y7r=0; x7=x4; rt x8r=hround(w-.75u); y8=good.y(y7l+beak/1.2)+eps; +arm(7,8,b,beak_darkness,.6beak_jut); % lower arm and beak +x9=1.5u; x10=w-x9; +bar_accent(9,10,c,-8/9desc_depth); +penlabels(1,2,3,4,5,6,7,8,9,10); endchar; diff --git a/language/turkish/mf/tkaccu.mf b/language/turkish/mf/tkaccu.mf new file mode 100644 index 0000000000..70667bf30b --- /dev/null +++ b/language/turkish/mf/tkaccu.mf @@ -0,0 +1,424 @@ +% Accented Turkish based on Computer Modern Roman upper case: +% These letters were originally coded by D. E. Knuth in November, 1979, +% inspired by the Monotype faces used in {\sl The Art of Computer Programming}. +% Sans serif designs by Richard Southall were added in April, 1982. +% The programs were revised for the new \MF\ conventions in 1985. + +% Accents added by P. A. MacKay in December, 1986. + +% Accents are intended to be exact copies of the accents in the +% Computer Modern file accent.mf, with the following exceptions: +% 1. Bar accents are adjusted to the width of the associated letter. +% 2. The hat accent is pinched in to fit the letter i. +% 3. Acute and grave accents are rotated to whatever angle +% best suits the letter associated letter. +% 4. The under_h accent is based on an inverted tie accent. + +% No attempt is made to put the accent in the same position +% that it would occupy if \TeX\ put it in with the \accent primitive. +% Each accent has been adjusted for vertical and horizontal position +% position to best fit the associated letter. + +% Upper case letters with accents above are all given the height +% value |body_height|, with the result that the accents kern up +% into the white space or leading from the previous line. It is +% the responsibility of the formatter to set TeX's baselineskip +% so that there is adequate room for such accents. The cup on +% upper case G is probably the most extreme case in serifed roman +% or italic fonts; the hat on O is the most extreme in sans-serif +% fonts + +% Character codes \0013--\0017, \0044--\0046, \0052 and \0136--\0137 +% are generated. + + +if unknown accsub: input accsub fi + +cmchar "The letter hatted A"; +beginchar(oct "044",13u#,body_height#,0); +adjust_fit(cap_serif_fit#,cap_serif_fit#); +numeric left_stem,right_stem,outer_jut,alpha; +right_stem=cap_stem-stem_corr; +left_stem=min(cap_hair if hefty: -3stem_corr fi,right_stem); +outer_jut=.8cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.5u; y1=y4=0; +x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=cap_height+apex_o+apex_oo; +alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr); +penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0); +penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0); +z0=whatever[z1r,z2r]=whatever[z3l,z4l]; +if y0<cap_height-cap_notch_cut: y0:=cap_height-cap_notch_cut; + fill z0+.5right{down}...{z4-z3}diag_end(3l,4l,1,1,4r,3r) + --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1} + ...{up}z0+.5left--cycle; % left and right diagonals +else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l) + --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals +penpos5(whatever,angle(z2-z1)); z5=whatever[z1,z2]; +penpos6(whatever,angle(z3-z4)); z6=whatever[z3,z4]; y6=y5; +if hefty: y5r else: y5 fi =5/12y0; +y5r-y5l=y6r-y6l=cap_band; penstroke z5e--z6e; % bar line +if serifs: numeric inner_jut; pickup tiny.nib; + prime_points_inside(1,2); prime_points_inside(4,3); + if rt x1'r+cap_jut+.5u+1<=lft x4'l-cap_jut: inner_jut=cap_jut; + else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi + dish_serif(1',2,a,1/2,outer_jut,b,.6,inner_jut)(dark); % left serif + dish_serif(4',3,c,1/2,inner_jut,d,1/3,outer_jut); fi % right serif +numeric hat_top, hat_thick, hat_shift; +hat_top=min(asc_height,2x_height); +hat_thick=.25[vair,curve]; +hat_shift=hat_top-.5[x_height,hat_top]+if dish > 0: .5 else: .85 fi(body_height-y2); +x7=.5w; hat_accent(7,g,hat_shift); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "The letter CHIM"; +if serifs: beginchar(oct "013",13u#,cap_height#,.875desc_depth#); + italcorr cap_height#*slant-.5u#; + adjust_fit(0,0); + pickup fine.nib; pos1(cap_hair,0); pos2(cap_band,90); + pos3(cap_curve,180); pos4(cap_band,270); pos5(hair,360); + rt x1r=rt x5r=hround(w-u); lft x3r=hround u; x2=x4=.55[x3,x1]; + top y2r=h+o; bot y4r=-o; y3=.5[y2,y4]; + bot y1=min(vround max(.6h,x_height-.5vair),bot y2l-eps); + y5=max(good.y .95(h-y1),y4l+eps); + (x2l',y2l)=whatever[z2r,z1l]; x2l:=min(x2l',x2l+.5u); + (x4l',y4l)=whatever[z4r,z5l]; x4l:=min(x4l',x4l+.5u); + filldraw stroke z1e{x2-x1,10(y2-y1)} + ...pulled_arc.e(2,3) & pulled_arc.e(3,4)...{up}z5e; % arc + pos6(.3[fine.breadth,cap_hair],0); x6r=x1r; top y6=h+o; + x1r-x1'=2cap_curve-fine; y1'=y1; + path upper_arc; upper_arc=z1{x2-x1,10(y2-y1)}..z2{left}; + numeric t; t=xpart(upper_arc intersectiontimes (z6l--z1')); + filldraw z1r--z6r--z6l--subpath(t,0) of upper_arc--cycle; % barb +else: beginchar(oct "013",11.5u#,cap_height#,.875desc_depth#); + italcorr cap_height#*slant-.5u#; + adjust_fit(0,0); + pickup fine.nib; pos1(1.2flare,80); pos2(slab,90); + pos3(cap_curve,180); pos4(slab,270); pos5(flare,275); + rt x1r=hround(w-1.1u); x2=x4=.5w+1.25u; + lft x3r=hround max(u,2u-.5cap_curve); rt x5r=hround(w-.9u); + top y1r=vround .95h+o; top y2r=h+o; y3=.5h; + bot y4r=-o; bot y5r=vround .08h-o; y5l:=good.y y5l; x5l:=good.x x5l; + filldraw stroke rterm.e(2,1,right,.9,4) & super_arc.e(2,3) + & super_arc.e(3,4) & term.e(4,5,right,.8,4); fi % arc and terminals +math_fit(-.3cap_height#*slant-.5u#,.5ic#); +cedilla_accent(4,a,o if serifs: -crisp fi); +penlabels(1,1',2,3,4,5,6); endchar; + +cmchar "The letter DHAL"; +beginchar(oct "014",13.5u#,cap_height#,.6desc_depth#); +italcorr .7cap_height#*slant-.5u#; +adjust_fit(cap_serif_fit#,0); +pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0); +lft x1l=lft x2l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +penpos3(cap_band,90); penpos4(cap_band,90); +penpos5(cap_curve-stem_corr,0); +penpos6(cap_band,-90); penpos7(cap_band,-90); +z3r=top z1; y4=y3; y5=.51[y4,y6]; y6=y7; +z7r=bot z2; x4=x6=.5w+.25u; x5r=hround(w-u); +x4l:=x6l:=x4-.25cap_curve; +fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe +if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif + nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif +math_fit(0,ic#-.5u#); +if serifs: x9=2u; x10=w-3.5u; +else: x9=x2l; x10=.5[x5l,x5]; fi +bar_accent(9,10,g,-8/9desc_depth); +penlabels(0,1,2,3,4,5,6,7,9,10); endchar; + +% cupped g. This is fairly straightforward, except for the +% lengthy calculation of cup_shift. To understand that, you must +% look at the dimension calculations and use of mid_thickness +% in Breve accent in accent.mf. No change to italic correction, +% because right horn of cup will always fall to left of hook of g. + +cmchar "The letter cupped G"; +if serifs: beginchar(oct "015",14u#,body_height#,0); + italcorr cap_height#*slant-1.5u#-.5cap_serif_fit#; + adjust_fit(0,.5cap_serif_fit#); + pickup tiny.nib; pos0(cap_stem,0); pos7(cap_stem,0); + rt x0r=hround(w-2u); y0=good.y(.1[bar_height,x_height]+1); x7=x0; + pickup fine.nib; + if hefty: bot y7=0; pos5(cap_stem,0); x5=x0; top y5=tiny.top y0; + else: pos5(cap_hair,0); pos8(cap_stem,0); + y7=.5bar_height; z5l=z8l; z8=z7; x9=x8r; bot y9=0; + filldraw z8l{down}..{4(x9-x8),y9-y8}z9--z8r--cycle; fi % spur + pos1(cap_hair,0); pos2(cap_band,90); + pos3(cap_curve,180); pos4(cap_band,270); + rt x1r=hround(w-2u); lft x3r=hround u; x2=x4=.55[x3,x1]; + top y2r=cap_height+o; bot y4r=-o; y3=.5[y2,y4]; + bot y1=min(vround max(.6h,x_height-.5vair),bot y2l-eps); + (x2l',y2l)=whatever[z2r,z1l]; x2l:=min(x2l',x2l+.5u); + (x4l',y4l)=whatever[z4r,z5l]; x4l:=min(x4l',x4l+.5u); + filldraw stroke z1e{x2-x1,10(y2-y1)} + ...pulled_arc.e(2,3) & pulled_arc.e(3,4)...z5e{up}; % arc + pos6(.3[fine.breadth,cap_hair],0); x6r=x1r; top y6=cap_height+o; + x1r-x1'=2cap_curve-fine; y1'=y1; + path upper_arc; upper_arc=z1{x2-x1,10(y2-y1)}..z2{left}; + numeric t; t=xpart(upper_arc intersectiontimes (z6l--z1')); + filldraw z1r--z6r--z6l--subpath(t,0) of upper_arc--cycle; % barb + pickup tiny.nib; filldraw stroke z0e--z7e; % stem + dish_serif(0,7,a,1/3,max(cap_jut,2.25u),b,1/3,1.25u); % serif + math_fit(-.3cap_height#*slant-.5u#,ic#); +else: beginchar(oct "015",12u#,body_height#,0); + italcorr cap_height#*slant-.5u#; + adjust_fit(0,0); + pickup fine.nib; pos1(1.2flare,80); pos2(slab,90); + pos3(cap_curve,180); pos4(slab,270); pos5(flare,270); + rt x1r=hround(w-1.35u); x2=x4=.5w+u; + lft x3r=hround max(u,2u-.5cap_curve); rt x5l=hround(w-1.2u); + top y1r=vround .93cap_height+o; top y2r=cap_height+o; y3=.5cap_height; + bot y4r=-o; bot y5r=vround .07cap_height-o; + filldraw stroke rterm.e(2,1,right,.9,4)&super_arc.e(2,3) + & super_arc.e(3,4) & term.e(4,5,right,1,4); % arc and terminals + pos0(stem,0); pos7(stem,0); + z7r=z5r; x0=x7; top y0=1+vround .35[bar_height,x_height]; + filldraw stroke z0e--z7e; % stem + pos8(cap_bar,90); pos9(cap_bar,90); + z0r=z9r; y8=y9; lft x8=hround x4; + filldraw stroke z8e--z9e; % bar + math_fit(-.3cap_height#*slant-.5u#,.5ic#); fi +numeric cup_shift; cup_shift= + .5[asc_height,body_height]-max(x_height+o+tiny,1/3[x_height,asc_height]+o-vround 1/6[vair,stem]); +cup_accent(2,d,cup_shift); +penlabels(0,1,1',2,3,4,5,6,7,8,9); endchar; + +cmchar "The letter KHA"; +beginchar(oct "016",13u#+width_adj#,cap_height#,.6desc_depth#); +italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#); +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +pos3(cap_stem,0); pos4(cap_stem,0); +lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); x3=x4=w-x1; +top y1=top y3=h; bot y2=bot y4=0; +filldraw stroke z1e--z2e; % left stem +filldraw stroke z3e--z4e; % right stem +penpos5(cap_bar,90); penpos6(cap_bar,90); +x5=x1; x6=x3; y5=y6=.52h; +fill stroke z5e--z6e; % bar +if serifs: numeric inner_jut; + if rt x1r+cap_jut+.5u+1<=lft x3l-cap_jut: inner_jut=cap_jut; + else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi + dish_serif(1,2,a,1/3,cap_jut,b,1/3,inner_jut); % upper left serif + dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif + dish_serif(3,4,e,1/3,inner_jut,f,1/3,cap_jut); % upper left serif + dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi % lower left serif +math_fit(0,.5ic#); +if dish>0: under_h_accent(2,4,k); +else: bar_accent(2,4,k,-8/9desc_depth); fi +penlabels(1,2,3,4,5,6); endchar; + +cmchar "The letter hatted I"; +beginchar(oct "045",max(6u#,4u#+cap_stem#),body_height#,0); +italcorr cap_height#*slant+.5u#; +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=cap_height; bot y2=0; +filldraw stroke z1e--z2e; % stem +if serifs: dish_serif(1,2,a,1/3,1.05cap_jut,b,1/3,1.05cap_jut); % upper serif + dish_serif(2,1,c,1/3,1.05cap_jut,d,1/3,1.05cap_jut); fi % lower serif +math_fit(0,.5ic#); +numeric hat_top, hat_thick, hat_shift; +hat_top=min(asc_height,2x_height); +hat_thick=.25[vair,curve]; +hat_shift=hat_top-.5[x_height,hat_top]+if serifs: .85 else: 1.15 fi(body_height-y1); +hat_accent(1,g,hat_shift); +penlabels(1,2); endchar; + +cmchar "The letter GNAF"; +beginchar(oct "017",13u#+width_adj#,body_height#,0); +italcorr body_height#*slant-cap_serif_fit#+cap_jut# if serifs: -2.5u# fi +min(.5cap_stem#,u#); +adjust_fit(cap_serif_fit#,cap_serif_fit#); +numeric thin_stem; thin_stem=hround(fudged.hair+stem_corr); +pickup tiny.nib; pos1(thin_stem,0); pos2(thin_stem,0); +pos3(thin_stem,0); pos4(thin_stem,0); +pickup tiny.nib; top y1=top y3=cap_height; bot y2=bot y4=0; +x1=x2; x3=x4; x1l=w-x3r; +rt x3r=hround min(w-2u,w-3u+.5fudged.cap_stem); +filldraw stroke z1e--z2e; % left stem +filldraw stroke z3e--z4e; % right stem +if hefty: penpos5(fudged.cap_stem,0); penpos6(fudged.cap_stem,0); + x5l=x1; x6r=x4; y5=cap_height; y6=0; + numeric upper_notch,lower_notch; + upper_notch=cap_height-cap_notch_cut; lower_notch=cap_notch_cut; + x1'=rt x1r; z1'=whatever[z5l,z6l]; x4'=lft x4l; z4'=whatever[z5r,z6r]; + fill z5l.. + if y1'<upper_notch: {right}(x1'+1,upper_notch){down}... fi + {z6-z5}diag_in(5l,6l,1,6r)--z6r.. + if y4'>lower_notch: {left}(x4'-1,lower_notch){up}... fi + {z5-z6}diag_in(6r,5r,1,5l)--cycle; % diagonal +else: penpos5(whatever,0); penpos6(whatever,90); + z5l=z1l; z6l=z4l; + z7=z6l+(max(eps,cap_stem-3stem_corr-tiny),0) rotated (angle(z5l-z6l)-90); + z5r=z7+whatever*(z5l-z6l); z6r=z7+whatever*(z5l-z6l); + filldraw stroke z5e..z6e; fi % diagonal +if serifs: if hefty: serif(1,2,a,1/3,-cap_jut); % upper left serif + else: serif(5,6,a,1/3,-cap_jut); fi % upper left serif + dish_serif(2,1,b,1/2,cap_jut,c,1/2,cap_jut)(dark); % lower left serif + dish_serif(3,4,e,1/2,cap_jut,f,1/2,cap_jut)(dark); fi % upper right serif +math_fit(0,max(.5ic#-.5u#,0)); +x8=hround .5w; +cap_tilde(8,t,10u); +penlabels(1,1',2,3,4,4',5,6,7,8); endchar; + +cmchar "The letter SHIN"; +beginchar(oct "052",10u#,cap_height#,.875desc_depth#); +italcorr cap_height#*slant-u#; +adjust_fit(0,0); +numeric theta; theta=90-angle(50u,h); slope:=-h/50u; % angle at middle +numeric s_slab; s_slab=if serifs:slab else:vround .2[slab,cap_stem] fi; +numeric ess'; ess'=max(fine.breadth,cap_ess); +pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90); +pos0(ess',theta); pos7(s_slab,-90); +x2+x7=2x0=w; x7-x2=if serifs: u else: 0 fi; top y2l=h+o; bot y7r=-o; +y0=.52h; lft x3l=hround u; rt x6r=hround(w-u); +x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +if serifs: pos1(hair,180); pos8(hair,180); + rt x1l=hround(w-1.5u); lft x8r=hround u; + bot y1=vround 2/3h+1; top y8=vround 1/3h-1; + filldraw stroke z1e{x2-x1,10(y2-y1)}....{left}z2e; % upper arc + filldraw stroke z7e{left}....{up}z8e; % lower arc + path upper_arc, lower_arc; + upper_arc=z1{x2-x1,10(y2-y1)}....{left}z2; + lower_arc=z7{left}....{up}z8; + pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0); + x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; + x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; + numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); + filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb + t:=xpart(lower_arc intersectiontimes(z9r--z8')); + filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb +else: pos1(1.2flare,-100); pos8(1.2flare,-100); + x1l=good.x(x1l+w-1.75u-rt x1); lft x8r=hround .8u; + top y1l=vround .93h+o; bot y8r=vround .1h-o; + filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal + filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal +math_fit(0,.5ic#); +cedilla_accent(7,c,o if serifs: -crisp fi); +penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar; + +cmchar "The letter THA"; +beginchar(oct "0136",10u#,cap_height#,.6desc_depth#); +italcorr cap_height#*slant-u#; +adjust_fit(0,0); +numeric theta; theta=90-angle(50u,h); slope:=-h/50u; % angle at middle +numeric s_slab; s_slab=if serifs:slab else:vround .2[slab,cap_stem] fi; +numeric ess'; ess'=max(fine.breadth,cap_ess); +pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90); +pos0(ess',theta); pos7(s_slab,-90); +x2+x7=2x0=w; x7-x2=if serifs: u else: 0 fi; top y2l=h+o; bot y7r=-o; +y0=.52h; lft x3l=hround u; rt x6r=hround(w-u); +x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +if serifs: pos1(hair,180); pos8(hair,180); + rt x1l=hround(w-1.5u); lft x8r=hround u; + bot y1=vround 2/3h+1; top y8=vround 1/3h-1; + filldraw stroke z1e{x2-x1,10(y2-y1)}....{left}z2e; % upper arc + filldraw stroke z7e{left}....{up}z8e; % lower arc + path upper_arc, lower_arc; + upper_arc=z1{x2-x1,10(y2-y1)}....{left}z2; + lower_arc=z7{left}....{up}z8; + pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0); + x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; + x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; + numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); + filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb + t:=xpart(lower_arc intersectiontimes(z9r--z8')); + filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb +else: pos1(1.2flare,-100); pos8(1.2flare,-100); + x1l=good.x(x1l+w-1.75u-rt x1); lft x8r=hround .8u; + top y1l=vround .93h+o; bot y8r=vround .1h-o; + filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal + filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal +math_fit(0,.5ic#); +x11=1.5u; x12=w-x11; +bar_accent(11,12,a,-8/9desc_depth); +penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10,11,12); endchar; + +cmchar "The letter hatted U"; +beginchar(oct"046",13u#+.5width_adj#,body_height#,0); +italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#); +if monospace: adjust_fit(cap_serif_fit#-.5u#,cap_serif_fit#-.5u#) +else: adjust_fit(cap_serif_fit#,cap_serif_fit#) fi; +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +pos2'(cap_stem,180); z2'=z2; +pos3(cap_band,-90); +pos4(cap_hair,0); pos5(cap_hair,0); +x1=x2; x3=.5[x1,x5]; x4=x5; x1l=w-x5r; +top y1=top y5=cap_height; y2=y4=1/3cap_height; bot y3r=-o; +lft x1l=hround max(2u,3u-.5cap_stem); +filldraw stroke z1e--z2e; % left stem +filldraw stroke pulled_arc.e(2',3) + & pulled_arc.e(3,4)&z4e--z5e; % arc and right stem +if serifs: dish_serif(1,2,a,1/3,cap_jut,b,1/3,cap_jut); % left serif + dish_serif(5,4,c,1/2,cap_jut,d,1/2,cap_jut)(dark); fi % right serif +math_fit(-cap_serif_fit#-.3cap_height#*slant-min(cap_height#*slant,u#), + max(.5ic#-.5u#,0)); +x6=.5w; +numeric hat_top, hat_thick, hat_shift; +hat_top=min(asc_height,2x_height); +hat_thick=.25[vair,curve]; +hat_shift=hat_top-.5[x_height,hat_top]+if serifs: .85 else: 1.15 fi(body_height-y1); +hat_accent(6,g,hat_shift); +penlabels(1,2,3,4,5); endchar; + +cmchar "The letter ZAL"; +beginchar(oct "0137",11u#,cap_height#,.6desc_depth#); +italcorr cap_height#*slant-.5u#; +adjust_fit(0,0); +numeric arm_thickness[],z_stem; +if hefty: arm_thickness1=Vround(slab-vair_corr); arm_thickness2=slab; + z_stem=.8[vair,cap_stem]; +else: arm_thickness1=slab; arm_thickness2=vround(slab+vair_corr); + z_stem=.9[vair,cap_stem]; fi +pickup tiny.nib; x3l=x4l=w-x1r=w-x2r; lft x3l=hround u; +top y1=h; y2=min(y1,h-2/3arm_thickness1); +bot y4=0; y3=max(y4,2/3arm_thickness2); +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z2 of currentpen; +fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l + ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r + ---cycle; % diagonal +pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180); +top y5r=h; x5=x1; lft x6r=hround 1.25u; y6=good.y(y5l-beak)-eps; +arm(5,6,a,beak_darkness**.8,-.4beak_jut); % upper arm and beak +pos7(arm_thickness2,-90); pos8(hair,0); +bot y7r=0; x7=x4; rt x8r=hround(w-.9u); y8=good.y(y7l+1.2beak)+eps; +arm(7,8,b,beak_darkness**.9,.6beak_jut); % lower arm and beak +math_fit(0,.5ic#); +x9=1.5u; x10=w-x9; +bar_accent(9,10,c,-8/9desc_depth); +penlabels(1,2,3,4,5,6,7,8,9,10); endchar; + +% cmchar "The letter hatted O"; +% beginchar(oct "046",14u#-width_adj#,body_height#,0); +% italcorr .7cap_height#*slant-.5u#; +% adjust_fit(0,0); +% penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90); +% penpos2(cap_curve,180); penpos4(cap_curve,0); +% if monospace: x2r=hround 1.5u; +% interim superness:=sqrt superness; % make |"O"|, not |"0"| +% else: x2r=hround u; fi +% x4r=w-x2r; x1=x3=.5w; y1r=cap_height+o; y3r=-o; +% y2=y4=.5cap_height-vair_corr; y2l:=y4l:=.52cap_height; +% penstroke pulled_super_arc.e(1,2)(.5superpull) +% & pulled_super_arc.e(2,3)(.5superpull) +% & pulled_super_arc.e(3,4)(.5superpull) +% & pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl +% math_fit(-.3cap_height#*slant-.5u#,ic#-.5u#); +% numeric hat_top, hat_thick, hat_shift; +% hat_top=min(asc_height,2x_height); +% hat_thick=.25[vair,curve]; +% hat_shift=hat_top-.5[x_height,hat_top]+if serifs: .85 else: .95 fi(body_height-y1); +% hat_accent(1,a,hat_shift); +% penlabels(1,2,3,4); endchar; +% +% diff --git a/language/turkish/mf/tkacil.mf b/language/turkish/mf/tkacil.mf new file mode 100644 index 0000000000..0c9f37b5d1 --- /dev/null +++ b/language/turkish/mf/tkacil.mf @@ -0,0 +1,264 @@ +% Accented Turkish based on Computer Modern Italic lower case: +% These letters were originally coded by D. E. Knuth in November, 1979, +% inspired by the Monotype faces used in {\sl The Art of Computer Programming}. +% Sans serif designs by Richard Southall were added in April, 1982. +% The programs were revised for the new \MF\ conventions in 1985. + +% Accents added by P. A. MacKay in December, 1986. + +% Accents are intended to be exact copies of the accents in the +% Computer Modern file accent.mf, with the following exceptions: +% 1. Bar accents are adjusted to the width of the associated letter. +% 2. The hat accent is pinched in to fit the letter i. +% 3. Acute and grave accents are rotated to whatever angle +% best suits the letter associated letter. +% 4. The under_h accent is based on an inverted tie accent. + +% No attempt is made to put the accent in the same position +% that it would occupy if \TeX\ put it in with the \accent primitive. +% Each accent has been adjusted for vertical and horizontal position +% position to best fit the associated letter. + +% Character codes \0033--\0037, \0053, \0074--\0076 and \0176--0177 +% are generated. +% Character code \0043 (hatted Persian o) is generated |iff not monospace|. +% This code position is used for the upright single quote in monospace fonts. + +if unknown accsub: input accsub fi + +cmchar "Italic letter hatted a"; +beginchar(oct "074",9u#,if .5(asc_height#-x_height#)>1.5stem#: + .8[x_height#,asc_height#] else:asc_height# fi,0); +italcorr 2/3[x_height#,asc_height#]*slant+.5stem#-serif_fit#-2u#; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +pos4(stem,0); x4=x0; y4+.5stem=vround .98x_height; +x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +rt x4r=hround(w-2.5u+.5stem); +top y1r=x_height+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +x5=x4; x7=w; hook_out(5,6,7); % closing hook +filldraw circ_stroke z4e--z5e; % stem +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +numeric hat_shift; if h<asc_height:hat_shift=-.2(asc_height-x_height); + else:hat_shift=0; fi +hat_accent(1,a,hat_shift); +penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "Italic letter chim"; +beginchar(oct "033",8u#,x_height#,.875desc_depth#); +italcorr if math_fitting:1/3x_height#*slant else:x_height#*slant-u# fi; +adjust_fit(0,0); pickup fine.nib; +pos0(flare,0); pos1(hair,0); pos2(vair,90); +pos3(curve,180); pos4(vair,270); pos5(hair,320); +x2=x4=.5(w+u); rt x1r=max(rt x2,hround(w-u))+eps; +lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5; +y1=.5[bar_height,h]; top y2r=h+oo; bulb(2,1,0); % bulb +bot y4r=-oo; y3=.5[y2,y4]; top y5l=vround .5bar_height; y6=bar_height; +path p; p=z4{right}..z5..z6; +filldraw stroke pulled_arc.e(2,3) + & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +cedilla_accent(4,a,o-crisp); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Italic letter dhal"; +beginchar(oct "034",9u#,asc_height#,.6desc_depth#); +italcorr max(1/3x_height#*slant+.5hair#+.5u#, + h#*slant+.5stem#-2u#) if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +x4+.5stem=hround(w-2.5u+.5stem); +top y1r=x_height+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +x5=x0; x7=w; hook_out(5,6,7); % closing hook +pickup tiny.nib; pos5'(stem,0); pos4(stem,0); +z5'=z5; top y4=h; filldraw stroke z4e--z5'e; % stem +sloped_serif.l(4,5',a,1/3,jut,serif_drop); % serif +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +bar_accent(2,5,c,-8/9desc_depth); +penlabels(0,1,2,3,4,5,6,7); endchar; + +% cupped g. This is fairly straightforward, except for the +% lengthy calculation of cup_shift. To understand that, you must +% look at the dimension calculations and use of mid_thickness +% in Breve accent in accent.mf. No change to italic correction, +% because right horn of cup will always fall to left of hook of g. + +cmchar "Italic letter cupped g"; +beginchar(oct "035",8u#,min(asc_height#,2x_height#),desc_depth#); +italcorr x_height#*slant+.5stem#-.5u#; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +x4+.5stem=hround(w-1.5u+.5stem); +top y1r=x_height+oo; bot y3r=0; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +pos4(stem,0); y4+.5stem=vround .98x_height; +pos5(stem,0); x5=x4; y5=-1/3d; +pos6(vair,-90); pos7(hair,-180); pos8(flare,-180); +bot y6r=-d-oo; y8-.5flare=vround -.9d; +lft x8r=hround(2u-.5flare); x6=x1; bulb(6,7,8); % bulb +filldraw circ_stroke z4e---z5e...{left}z6e; % stem and arc +math_fit(-min(.3x_height#*slant+.5curve#-u#,1.5u#-desc_depth#*slant), + ic#-1/3x_height#*slant); +numeric cup_shift; cup_shift= + x_height+slab-max(x_height+o+tiny,1/3[x_height,asc_height]+o-vround 1/6[vair,stem]); +if cup_shift>0:cup_shift:=0; fi +cup_accent(1,c,cup_shift); +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +cmchar "Italic letter kha"; +beginchar(oct "036",9u#,asc_height#,.6desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(0,0); pickup tiny.nib; +pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; +filldraw circ_stroke z2e--z1e; % left stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem); +x5=x4-.25u; ital_arch(2,3,4); % arch +x7=w; hook_out(5,6,7)(skewed); % closing hook +filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem +math_fit(0,ic#); +bar_accent(2,6,k,-8/9desc_depth); +penlabels(1,2,3,4,5,6,7); endchar; + +cmchar "Italic letter hatted i"; +beginchar(oct "075",5u#,min(asc_height#,10/7x_height#+.5flare#),0); +italcorr max(1/3x_height#*slant+.5hair#+.5u#,h#*slant+.5flare#-2.5u#); +adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib; +x0=0; x5=w; x2=.5w+.25u; x3=.5w-.25u; +hook_in(0,1,2)(skewed); hook_out(3,4,5)(skewed); % hooks +filldraw stroke z2e--z3e; % stem +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); +numeric hat_shift; if h<asc_height:hat_shift=-.2(asc_height-x_height); + else:hat_shift=0; fi +hat_accent(1,d,hat_shift); +penlabels(0,1,2,3,4,5); endchar; + +cmchar "Italic letter gnaf"; +beginchar(oct "037",10u#,if .5(asc_height#-x_height#)>1.5stem#: + .8[x_height#,asc_height#] else:asc_height# fi,0); +italcorr .8[x_height#,asc_height#]*slant-serif_fit#+.5stem#-2u#; +adjust_fit(0,0); pickup fine.nib; +x0=0; x1=x2; pos2(stem,0); lft x2l=hround(2.5u-.5stem); y2-.5stem=-oo; +hook_in(0,a,1); % opening hook +filldraw circ_stroke z2e--z1e; % left stem +x4+.5stem=hround(w-2.5u+.5stem); x5=x4-.25u; ital_arch(2,3,4); % arch +x7=w; hook_out(5,6,7)(skewed); % closing hook +filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); +numeric tilde_shift; if h<asc_height:tilde_shift=-.3(asc_height-x_height); + else:tilde_shift=0; fi +x8=hround .5w; +tilde_accent(8,t,tilde_shift); +penlabels(0,a,1,2,3,4,5,6,7,8); endchar; + +iff not monospace: cmchar "Italic letter hatted o"; +beginchar(oct "040",9u#,if .5(asc_height#-x_height#)>1.5stem#: + .8[x_height#,asc_height#] else:asc_height# fi,0); +italcorr 1/3[x_height#,asc_height#]*slant+.5curve#-1.75u# if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360); +x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2; +top y1r=x_height+oo; y2=y4=.5[y1,y3]; bot y3r=-oo; +filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +numeric hat_shift; if h<asc_height:hat_shift=-.2(asc_height-x_height); + else:hat_shift=0; fi +hat_accent(1,a,hat_shift); +penlabels(1,2,3,4); endchar; + +cmchar "Italic letter shin"; +beginchar(oct "053",5.25u#+max(1.75u#,flare#),x_height#,.875desc_depth#); +italcorr x_height#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle +pos2(vair,-90); pos0(max(fine.breadth,ess),theta); pos7(vair,-90); +x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo; +y0-.5ess=y7l+.55(y2r-y7l-ess); +lft x3l=hround u-eps; rt x6r=hround(w-.5u)+eps; +x3r-x3l=x6r-x6l=hround .5[vair,ess]-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +interim superness:=more_super; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +pos1(hair,0); pos10(hround .75[hair,flare],0); +pos2'(vair,90); z2'=z2; +pos8(hair,-180); pos9(flare,-180); +rt x10r=hround(w-u)+2eps; lft x9r=hround .5u-2eps; y10=.78h; y9=.25h; +bulb(2',1,10); bulb(7,8,9); % bulbs +math_fit(0,ic#); +cedilla_accent(7,c,o-crisp); +penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Italic letter tha"; +beginchar(oct "0176",5.25u#+max(1.75u#,flare#),x_height#,.6desc_depth#); +italcorr x_height#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle +pos2(vair,-90); pos0(max(fine.breadth,ess),theta); pos7(vair,-90); +x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo; +y0-.5ess=y7l+.55(y2r-y7l-ess); +lft x3l=hround u-eps; rt x6r=hround(w-.5u)+eps; +x3r-x3l=x6r-x6l=hround .5[vair,ess]-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +interim superness:=more_super; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +pos1(hair,0); pos10(hround .75[hair,flare],0); +pos2'(vair,90); z2'=z2; +pos8(hair,-180); pos9(flare,-180); +rt x10r=hround(w-u)+2eps; lft x9r=hround .5u-2eps; y10=.78h; y9=.25h; +bulb(2',1,10); bulb(7,8,9); % bulbs +x11=1.25u; x12=w-x11; +math_fit(0,ic#); +bar_accent(11,12,a,-8/9desc_depth); +penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12); endchar; + +cmchar "Italic letter hatted u"; +beginchar(oct "076",9.5u#,min(asc_height#,10/7x_height#+.5flare#),0); +italcorr 1/3x_height#*slant+.5hair#+u#; +adjust_fit(0,0); pickup fine.nib; interim superness:=more_super; +x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +hook_in(0,1,2)(skewed); % opening hook +pos2'(stem,-180); z2'=z2; +pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5]; +pos6(stem,0); rt x6r=hround(w-2.5u+.5stem); +x5=x6=x7; x9=w; hook_out(7,8,9); % closing hook +y3=.7[y4,y5]; bot y4r=-oo; y5=.57x_height; y6+.5stem=x_height; +filldraw stroke z2'e{-u,-x_height} + ...super_arc.e(3,4)...{up}z5e; % left stem and arc +filldraw circ_stroke z6e--z7e; % right stem +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); +numeric hat_shift; if h<asc_height:hat_shift=-.2(asc_height-x_height); + else:hat_shift=0; fi +x10=.5w; hat_accent(10,d,hat_shift); +penlabels(0,1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Italic letter zal"; +beginchar(oct "0177",5.5u#+max(1.5u#,stem#),x_height#,.6desc_depth#); +italcorr x_height#*slant+.5hair#; +adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib; +pos1(hair,0); pos2(stem,-90); pos3(vair,-90); pos4(hair,0); +lft x1l=hround(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=hround(w-.5u); +top y1=.78h; top y2l=top y4=h+oo; y3=.825h; +pos5(hair,0); pos6(vair,-90); pos7(stem,-90); pos8(hair,0); +x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=hround(w+.5hair-eps); +bot y5=bot y7r=-oo; y6=.175h; bot y8=.31h; +pair p; p=(z4-z5) yscaled 2; +filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e; % upper bar +filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e; % lower bar +filldraw stroke z5e{p}..{p}z4e; % diagonal +math_fit(0,1/3x_height#*slant+.5hair#+.5u#); +x9=x5; x10=.4[x7,x8]; +bar_accent(9,10,c,-8/9desc_depth); +penlabels(1,2,3,4,5,6,7,8,9,10); endchar; diff --git a/language/turkish/mf/tkdotl.mf b/language/turkish/mf/tkdotl.mf new file mode 100644 index 0000000000..ae1b1e6c17 --- /dev/null +++ b/language/turkish/mf/tkdotl.mf @@ -0,0 +1,441 @@ +% Computer Modern Roman lower case with dotted diacriticals for Turkish etc. +% These letters were originally coded by D. E. Knuth in November, 1979, +% inspired by the Monotype faces used in {\sl The Art of Computer Programming}. + +% Sans serif designs by Richard Southall were added in April, 1982. +% The programs were revised for the new \MF\ conventions in 1985. + +% Dotted diacriticals added by P. A. MacKay, January, 1987. + +% Character codes \0220 through \0232 are generated unless pxlfont = 128 +% in which case the characters are mapped into \020 through \032 + +if unknown accsub: input accsub fi + +cmchar "The letter dad"; +dot_sharp_values; +beginchar(oct"020",10u#+serif_fit#,asc_height#,desc_depth#); +italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(0,serif_fit#); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; +rt x1r=hround(w-2.5u+.5stem'); top y1=h; +numeric edge; edge=lft x2l; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); +pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); +lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),1/3[lft x2,edge]); +y3=1/8[bar_height,x_height]; +x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; +lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=-oo; +x7=x3; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); +filldraw stroke z3e{up}...pulled_arc.e(4,5) + & pulled_arc.e(5,6)...{up}z7e; % bowl +y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{left}z4l)); +pickup tiny.nib; bot y2=if serifs:-min(oo,serif_drop) else: 0 fi; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif + sloped_serif.r(2,0,b,1/3,jut,min(oo,serif_drop)); fi % lower serif +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x8=.5w; dot_accent(8,g,dot_shift); +penlabels(0,1,2,3,4,5,6,7); endchar; + +iff not variant_g: cmchar "The letter ghayn"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct"021",10u#,min(asc_height#,10/7x_height#+.5dot_diam#),desc_depth#); +define_whole_blacker_pixels(dot_diam); +italcorr h#*slant-serif_fit# + .5dot_diam# -2u#; +adjust_fit(0,0); +numeric light_vair,light_curve,loop_top,loop_side; +light_vair=Vround(.5[thin_join,vair]+vair_corr); +light_curve=max(fine.breadth,hround(curve-3stem_corr)); +loop_top=Vround .77[vair,fudged.stem]; +loop_side=hround .64[vair,fudged.stem]; +pickup fine.nib; pos1(light_vair,90); +pos2(light_curve,180); pos3(light_vair,270); +pos4(light_curve,360); pos11(loop_top,90); +y11r=good.y(y11r+.15bar_height-y11); x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3]; +lft x2r=hround(1.75u-.5light_curve); rt x4r=hround(w-2.75u+.5light_curve); +top y1r=x_height+oo; y3r=good.y(y3r+.27[top y11r,bot y1l]-y3); +filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3); % left half of bowl +filldraw stroke pulled_arc.e(3,4) & pulled_arc.e(4,1); % right half of bowl +x0=superness[x1r,x4r]; y0=superness[y4r,y1r]; % NE point on the super bowl +x8'=superness[x3r,x2r]; y8'=superness[y2r,y3r]; % SW point on the super bowl +x8''=superness[x3,x2]; y8''=superness[y2,y3]; +pos0(thin_join,angle(z0-z8')+90); +pos8(thin_join,angle(z0-z8')-90); z8=.618[z8',z8'']; +if serifs: pos5(vair,90); + pos6(hair,0); pos7(.5[hair,flare],0); x5=.75[x0,x6]; top y5r=x_height+o; + rt x6r=hround(w-.25u); y6+(.5[hair,flare])/2=.95[bar_height,x_height]+oo; + filldraw stroke z0e..{right}z5e; bulb(5,6,7); % ear +else: pos5(vair',100); top y5r=x_height+oo; + rt x5l=hround(w-.25u); y5l:=good.y y5l; + filldraw z0l{z5-z0}..z5l--z5r{left}..{curl 1}z0r--cycle; fi % ear +pos10(loop_top,90); x10=x8+.75u; y10=y11; +pos12(loop_side,0); pos13(light_vair,-90); +pos14(loop_side,-180); pos10'(.5[thin_join,vair],-270); +rt x12r=hround max(w-1.25u+.5loop_side,w-.5u); y12=y14=.5[y11,y13]; +x11=x13=max(.5w,x10+eps); bot y13r=-d-oo-1; x14=w-x12; z10'l=z10l; +filldraw stroke z8e{z8-z0}..z10e---z11e; % link +filldraw stroke {{interim superness:=hein_super; super_arc.e(11,12)}} + & super_arc.e(12,13) & super_arc.e(13,14) & super_arc.e(14,10'); % loop +pickup tiny.nib; +pos15(dot_diam,0); pos16(dot_diam,90); +x15=.55[x2r,x4r]; % +top y16r=h+1; +if bot y16l-top y1<slab: y16l:=min(y16r-eps,y1+tiny+slab); fi +x15=x16; y15=.5[y16l,y16r]; dot(15,16); % dot +penlabels(0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16); labels(8',8''); endchar; + +iff variant_g: cmchar "Variant letter ghayn"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct"021",10u#,min(asc_height#,10/7x_height#+.5dot_diam#),desc_depth#); +define_whole_blacker_pixels(dot_diam); +italcorr h#*slant-serif_fit# + .5dot_diam# -2u#; +adjust_fit(0,serif_fit# if serifs: -.5u# fi); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; +rt x1r=hround(w-2.5u+.5stem'); +numeric edge; edge=lft x2l; +path edge_path; edge_path=(edge,x_height)--(edge,0); +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); +pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); +lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height; +x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; +lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=vround 1/3vair; +lft x7l=edge; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); +filldraw stroke z3e{up}...{left}z4e&super_arc.e(4,5) + &super_arc.e(5,6)&z6e{right}...{up}z7e; % bowl +y1=ypart(edge_path intersectionpoint(z3l{up}...{left}z4l)); +y0=ypart(edge_path intersectionpoint(z7l{down}...{left}z6l)); +pickup tiny.nib; bot y2=if serifs: -.25d else: 0 fi; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; +pos8(hround(hair-stem_corr),0); pos7'(stem',0); +z7'=z1; x8r=x7'r; top y8=x_height+oo; +filldraw stroke z7'e--z8e; % point +if serifs: pickup tiny.nib; + pos9(vair,-90); x9=.5[x2,x10]; bot y9r=-d-o-1; + pos10(hair,-180); lft x10r=hround u; y10=-.75d+.5flare; + pos11(flare,-180); z11r=z10r; + bulb(9,10,11); filldraw stroke super_arc.e(2,9); % tail +else: pickup fine.nib; pos2'(stem,0); z2'=z2; + z2''r=z2'r; z2''=z2'; z2''l=(x2'l,0); + pos9(vair,-90); x9=4.5u; bot y9r=-d-o-1; + pos10(.5[vair,flare],-90); lft x10=hround 1.25u; + y10r=good.y -5/6d; y10l:=good.y y10l; + filldraw stroke z2'e..z2''e&super_arc.e(2'',9) + & term.e(9,10,left,.9,4); fi % tail +pickup tiny.nib; +pos13(dot_diam,0); pos14(dot_diam,90); +x13=x4l; % Pulls the dot over just a bit to the right. +top y14r=h+1; +if bot y14l-top y4r<slab: y14l:=min(y14r-eps,y4+tiny+slab); fi +x13=x14; y13=.5[y14l,y14r]; dot(13,14); % dot +penlabels(0,1,2,3,4,5,6,7,8,9,10,11,13,14); endchar; + +cmchar "The letter hha"; +dot_sharp_values; +beginchar(oct"022",10u#,asc_height#,desc_depth#); +italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +pos1'(stem',0); pos2'(stem',0); pos3(stem,0); +lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1; +top y1=h; bot y2=0; y1=y1'; y2=y2'; +filldraw stroke z1'e--z2'e; % left stem +h_stroke(2,a,3,4); % arch and right stem +if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif + numeric inner_jut; pickup tiny.nib; + if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; + else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi + dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif + dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x5=.5w; dot_accent(5,k,dot_shift); +penlabels(1,2,3,4); endchar; + +cmchar "The letter dotted i"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct"023",5u#,min(asc_height#,10/7x_height#+.5dot_diam#),0); +define_whole_blacker_pixels(dot_diam); +italcorr h#*slant-serif_fit# + .5dot_diam# -2u#; +adjust_fit(serif_fit#+stem_shift# if monospace:+.25u#fi,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem',0); pos2(stem',0); +if odd(w-stem'): change_width; fi +lft x1l=hround(.5w-.5stem'); x1=x2; +top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=0; +filldraw stroke z1e--z2e; % stem +pos3(dot_diam,0); pos4(dot_diam,90); +if serifs: x3r=max(x1r,x1+.5(dot_diam-tiny)-.2jut) else: x3=x1-.5 fi; +top y4r=h+1; +if bot y4l-top y1<slab: y4l:=min(y4r-eps,y1+tiny+slab); fi +x3=x4; y3=.5[y4l,y4r]; dot(3,4); % dot +if serifs: sloped_serif.l(1,2,a,1/3,.95jut,serif_drop); % upper serif + dish_serif(2,1,b,1/3,jut,c,1/3,.9jut); fi % lower serif +penlabels(1,2,3,4); endchar; + +cmchar "The letter qaf"; +dot_sharp_values; +beginchar(oct"024",9.5u#,asc_height#,desc_depth#); +italcorr x_height#*slant-.2u#; +adjust_fit(serif_fit#,serif_fit#); pickup tiny.nib; +numeric right_jut,stem[],alpha[]; +stem1=max(tiny.breadth,hround(fudged.stem-stem_corr)); +stem2=max(tiny.breadth,hround(fudged.stem-2stem_corr)); +stem3=max(tiny.breadth,hround(fudged.hair if hefty:-\\4stem_corr fi)); +stem4=max(tiny.breadth,hround(fudged.stem-3stem_corr)); +if serifs: right_jut=.6jut; else: right_jut=.4tiny; fi +pos1(stem1,0); pos2(stem2,0); top y1=h; bot y2=0; +lft x1l=lft x2l=hround(2.5u-.5stem1); +top y3=x_height; rt x3r=hround(r-letter_fit-.7u-right_jut)+eps; +bot y6=0; rt x6r=hround(r-letter_fit-.3u-right_jut)+eps; +x4=x11=x1; y4=.7bar_height; y11=y3; +alpha1=diag_ratio(1,.5(stem3-tiny),y3-y4,x3r-x4); +alpha2=diag_ratio(1,.5(stem4-tiny),y11-y6,x6r-x1); +penpos3(alpha1*(stem3-tiny),0); penpos4(whatever,-90); +z5=.5[z5l,z5r]; penpos6(alpha2*(stem4-tiny),0); +forsuffixes $=l,r: y3'$=x_height; y6'$=0; z4$=z3'$+whatever*(z3-z4); + z5$=z6'$+whatever*(z11-z6)=whatever[z3,z4]; endfor +z3'r=z3r+penoffset z3-z4 of currentpen+whatever*(z3-z4); +% we have also |z3'l=z3l+penoffset z4-z3 of currentpen+whatever*(z3-z4)|;\] +z6'r=z6r+penoffset z11-z6 of currentpen+whatever*(z11-z6); +z6'l=z6l+penoffset z6-z11 of currentpen+whatever*(z11-z6); +fill z4r--diag_end(4r,3'r,1,.5,3'l,4l)--z4l--cycle; % upper diagonal +fill z5l--diag_end(5l,6'l,.5,1,6'r,5r)--z5r--cycle; % lower diagonal +pos0(stem1,0); pos0'(stem2,0); y0=y0'; x0=x1; x0'=x2; +rt z0r=whatever[z3,z4]; filldraw stroke z1e..z0e--z0'e..z2e; % stem +if serifs: numeric inner_jut; + if rt x2r+jut+.5u+1<=lft x6l-jut: inner_jut=jut; + else: rt x2r+inner_jut+.5u+1=lft x6l-inner_jut; fi + sloped_serif.l(1,0,a,1/3,jut,serif_drop); % upper stem serif + dish_serif(2,0',b,1/3,jut,c,1/3,inner_jut); % lower stem serif + dish_serif(3,4,d,2/3,1.4jut,e,1/2,right_jut)(dark); % upper diagonal serif + dish_serif(6,5,f,1/2,inner_jut,g,1/3,right_jut)(dark);fi % lower diagonal serif +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x12=.5w; dot_accent(12,q,dot_shift); +penlabels(0,1,2,3,4,5,6,11); endchar; + +cmchar "The letter dotted o"; +dot_sharp_values; +beginchar(oct"025",9u#,dot_top#,0); +italcorr 1/3[x_height#,asc_height#]*slant-.5u# if serifs: + .25dot_diam# fi; +adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); +penpos1(vair,90); penpos3(vair',-90); +penpos2(curve,180); penpos4(curve,0); +x2r=hround max(.5u,1.25u-.5curve); +x4r=w-x2r; x1=x3=.5w; y1r=x_height+vround 1.5oo; y3r=-oo; +y2=y4=.5x_height-vair_corr; y2l:=y4l:=.52x_height; +penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_diam, dot_top); +dot_shift=0; % in this case, the position happens to be correct +x7=x1-.8dot_diam; x8=x7+1.6dot_diam; +dot_accent(7,a,dot_shift); +dot_accent(8,b,dot_shift); +penlabels(1,2,3,4,7,8); endchar; + +cmchar "The letter sad"; +dot_sharp_values; +beginchar(oct"026",7.1u#,x_height#,desc_depth#); +italcorr x_height#*slant-if serifs:.55u# else:.3u# fi; +adjust_fit(if monospace: .5u#,.4u# else: 0,if serifs:0 else:-.2u# fi fi); +numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle +numeric s_slab; s_slab=if serifs:vair else:Vround .1[vair,stem] fi; +numeric ess'; ess'=max(fine.breadth,ess); +pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-100); +pos0(ess',theta); pos7(s_slab,-90); x2l=x0=x7=.5w; +top y2l=h+vround 1.5oo; bot y7r=-oo; +y0-.5ess'=y7l+if serifs:.54 else: .52 fi\\(y2r-y7l-ess'); +lft x3l=hround .6u; rt x6r=hround(w-.6u); +x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +interim superness:=more_super; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +if serifs: pos1(hair,180); pos8(hair,180); + rt x1l=hround(w-1.05u); lft x8r=hround .6u; + bot y1=min(bot y2r,vround 1/5[top y5r,h]); + top y8=max(top y7l,vround 5/6 bot y4l); + filldraw stroke z1e{up}....{left}z2e; % upper arc + filldraw stroke z7e{left}....{x8-x7,5(y8-y7)}z8e; % lower arc + path upper_arc, lower_arc; + upper_arc=z1{up}....{left}z2; lower_arc=z7{left}....{x8-x7,5(y8-y7)}z8; + pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0); + x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; + x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; + numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); + filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb + t:=xpart(lower_arc intersectiontimes(z9r--z8')); + filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb +else: pos1(4/7[s_slab,flare],-100); pos8(flare,-100); + x1l=good.x(x1l+w-u-rt x1); lft x8r=hround .5u; + top y1l=vround(.93h+1.5oo); bot y8r=vround .1h-oo; + filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal + filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x11=.5[x3l,x6r]; % Centered on outside edges of curves +dot_accent(11,q,dot_shift); +penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar; + +cmchar "The letter tta"; +dot_sharp_values; +beginchar(oct"027",6u#+max(u#,.5stem#), + min(asc_height#,if hefty:9/7 else:10/7 fi\\ x_height#),desc_depth#); +italcorr x_height#*slant if serifs: -.9u# else: -.4u# fi; +adjust_fit(0,if serifs: 0 else: -.5u# fi); +numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi); +pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180); +lft x2r=lft x3r=hround(2.5u-.5shaved_stem); +y2=y8; y3=max(.5bar_height,2vair); +pickup crisp.nib; pos8(bar,90); +rt x8=hround(w-1.3u); top y8r=x_height; lft x7=hround 1/3u; y7l=y8l; +if hefty: pos7(bar,90); + filldraw stroke z7e--z8e; % crossbar + pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0); + rt x1r=fine.rt x2l; top y1=h; + penpos2'(x1r-x1l,0); x2'=x1; y2'=y2; + filldraw stroke z1e--z2'e; % upper terminal +else: pos7(vair,90); pos1(hair,0); + rt x1r=fine.rt x2l; top y1=h; + filldraw z1l{down}...{left}z7r--z7l--z8l + --z8r--(x1r,y8r)--z1r--cycle; fi % upper terminal and crossbar +pickup fine.nib; interim superness:=more_super; +pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u); +if serifs: pos5(hair,0); y5=y3; x4l=.5[x3l,x5l]; + (x,y4r)=whatever[z4l,z5l]; x4r:=max(x,.5[x3r,x4]); + filldraw stroke z2e..super_arc.e(3,4)...{up}z5e; % stem and hook + pickup crisp.nib; pos6(hair,0); pos5'(hair,0); + x6=x5=x5'; top y6=max(vround .75bar_height,top y5); y5=y5'; + filldraw stroke z5'e--z6e; % terminal +else: pos5(vair,-75); top y5l=vround .2[top y4l,bar_height]; + x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair; + filldraw stroke z2e..super_arc.e(3,4); % stem and hook + path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal + if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0): + filldraw stroke z4e{right}...{up}z5e; + else: filldraw p; fi fi; +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x9=.5[x3,x4]; % A little left of the low point of hook +dot_accent(9,g,dot_shift); +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "The letter dotted u"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct"030",10u#,min(asc_height#,10/7x_height#+.5dot_diam#),0); +define_whole_blacker_pixels(dot_diam); +italcorr 1/3[x_height#,asc_height#]*slant-.5u# if serifs: - stem# fi; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +numeric light_vair; light_vair=vair if hefty: -vround 2vair_corr fi; +if light_vair<fine.breadth: light_vair:=fine.breadth; fi +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +pos3(stem,0); pos4(stem',0); +lft x1l=hround(2.5u-.5stem); x1=x2; x3=w-x1; x3r=x4r; +if serifs: top y1=x_height+min(oo,serif_drop); bot y4=-min(oo,serif_drop); +else: top y1=x_height; bot y4=0; fi +pos0(stem,0); pos0'(stem',0); x0=x3; x0'=x4; y0=y0'; +penpos2'(stem-fine,-180); z2'=z2; y3=y1; y2=.5bar_height; +penpos5(max(eps,light_vair-fine),-90); penpos6(thin_join-fine,0); +y6=y0=2/3bar_height; +filldraw stroke z1e--z2e; % left stem +filldraw stroke z3e..z0e--z0'e..z4e; % right stem +pickup fine.nib; bot y5r=-oo; x5l=.5w-.25u; lft x6l=tiny.lft x0l; +(x,y5r)=whatever[z5l,z6l]; x5r:=max(x,.5[x5,x2'r]); +filldraw stroke {{interim superness:=hein_super; + pulled_arc.e(2',5)}} & z5e{right}...{up}z6e; % arc +if serifs: sloped_serif.l(1,2,a,1/3,jut,serif_drop); % upper left serif + sloped_serif.l(3,0,b,1/3,jut,serif_drop); % upper right serif + sloped_serif.r(4,0',c,1/3,jut,min(oo,serif_drop)); fi % lower right serif +pickup tiny.nib; +pos7(dot_diam,0); pos8(dot_diam,90); +pos9(dot_diam,0); pos10(dot_diam,90); +x7=.5[x1,x3]-.9dot_diam; % +top y8r=top y10r=h+1; +if bot y8l-top y1<slab: y8l:=y10l:=min(y8r-eps,y1+tiny+slab); fi +x7=x8; y7=y9=.5[y8l,y8r]; dot(7,8); % dot +x9r=max(x7+1.9dot_diam,x3); +x9=x10; dot(9,10); +penlabels(1,2,3,4,5,7,8,9,10); labels(6); endchar; + +cmchar "The letter zad"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct"031",8u#,min(asc_height#,10/7x_height#+.5dot_diam#),0); +define_whole_blacker_pixels(dot_diam); +italcorr h#*slant-.5serif_fit# + .5dot_diam# -2u#; +adjust_fit(0,.5serif_fit#); +numeric arm_thickness[],z_stem; +if hefty: arm_thickness1=Vround(vair-vair_corr); arm_thickness2=vair; + z_stem=.6[vair,stem]; +else: arm_thickness1=vair; arm_thickness2=vair'; z_stem=.9[vair,stem]; fi +pickup tiny.nib; rt x1r=rt x2r=hround(w-.8u); lft x3l=lft x4l=hround .5u; +top y1=x_height; y2=min(y1,x_height-2/3arm_thickness1); +bot y4=0; y3=max(y4,2/3arm_thickness2); +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3)); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z2 of currentpen; +fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l + ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r + ---cycle; % diagonal +pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180); +top y5r=x_height; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps; +arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak +pos7(arm_thickness2,-90); pos8(hair,0); +bot y7r=0; x7=x4; rt x8r=hround(w-.75u); y8=good.y(y7l+beak/1.2)+eps; +arm(7,8,b,beak_darkness,.6beak_jut); % lower arm and beak +pickup tiny.nib; +pos9(dot_diam,0); pos10(dot_diam,90); +x9=.55[x3,x1]; % Pull the dot over just a bit to the right. +top y10r=h+1; +if bot y10l-top y1<slab: y10l:=min(y10r-eps,y1+tiny+slab); fi +x9=x10; y9=.5[y10l,y10r]; dot(9,10); % dot +penlabels(1,2,3,4,5,6,7,8,9,10); endchar; + + +cmchar "The letter zza"; +dot_sharp_values; +beginchar(oct"032",8u#,x_height#,desc_depth#); +italcorr x_height#*slant-.5serif_fit#-.3u#; +adjust_fit(0,.5serif_fit#); +numeric arm_thickness[],z_stem; +if hefty: arm_thickness1=Vround(vair-vair_corr); arm_thickness2=vair; + z_stem=.6[vair,stem]; +else: arm_thickness1=vair; arm_thickness2=vair'; z_stem=.9[vair,stem]; fi +pickup tiny.nib; rt x1r=rt x2r=hround(w-.8u); lft x3l=lft x4l=hround .5u; +top y1=h; y2=min(y1,h-2/3arm_thickness1); +bot y4=0; y3=max(y4,2/3arm_thickness2); +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3)); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z2 of currentpen; +fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l + ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r + ---cycle; % diagonal +pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180); +top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps; +arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak +pos7(arm_thickness2,-90); pos8(hair,0); +bot y7r=0; x7=x4; rt x8r=hround(w-.75u); y8=good.y(y7l+beak/1.2)+eps; +arm(7,8,b,beak_darkness,.6beak_jut); % lower arm and beak +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x9=.5[x3,x1]; dot_accent(9,c,dot_shift); +penlabels(1,2,3,4,5,6,7,8); endchar; diff --git a/language/turkish/mf/tkdotu.mf b/language/turkish/mf/tkdotu.mf new file mode 100644 index 0000000000..30fe05b721 --- /dev/null +++ b/language/turkish/mf/tkdotu.mf @@ -0,0 +1,374 @@ +% Computer Modern Roman upper case with dotted diacriticals for Turkish etc. +% These letters were originally coded by D. E. Knuth in November, 1979, +% inspired by the Monotype faces used in {\sl The Art of Computer Programming}. + +% Sans serif designs by Richard Southall were added in April, 1982. +% The programs were revised for the new \MF\ conventions in 1985. + +% Dotted diacriticals added by P. A. MacKay, January, 1987. + +% Upper case letters with accents above are all given the height +% value |body_height|, with the result that the accents kern up +% into the white space or leading from the previous line. It is +% the responsibility of the formatter to set TeX's baselineskip +% so that there is adequate room for such accents. The cup on +% upper case G is probably the most extreme case in serifed roman +% or italic fonts; the hat on O is the most extreme in sans-serif +% fonts + +% Character codes \000 through \012 are generated. + +if unknown accsub: input accsub fi + +cmchar "The letter DAD"; +dot_sharp_values; +beginchar(oct "000",13.5u#,cap_height#,desc_depth#); +italcorr .7cap_height#*slant-.5u#; +adjust_fit(cap_serif_fit#,0); +pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0); +lft x1l=lft x2l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +penpos3(cap_band,90); penpos4(cap_band,90); +penpos5(cap_curve-stem_corr,0); +penpos6(cap_band,-90); penpos7(cap_band,-90); +z3r=top z1; y4=y3; y5=.51[y4,y6]; y6=y7; +z7r=bot z2; x4=x6=.5w+.25u; x5r=hround(w-u); +x4l:=x6l:=x4-.25cap_curve; +fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe +if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif + nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif +math_fit(0,ic#-.5u#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x8=2/3[x3,x4]; dot_accent(8,g,dot_shift); +penlabels(1,2,3,4,5,6,7); endchar; + +cmchar "The letter GHAYN"; +dot_sharp_values; +if serifs: beginchar(oct "001",14u#,body_height#,0); + italcorr cap_height#*slant-1.5u#-.5cap_serif_fit#; + adjust_fit(0,.5cap_serif_fit#); + pickup tiny.nib; pos0(cap_stem,0); pos7(cap_stem,0); + rt x0r=hround(w-2u); y0=good.y(.1[bar_height,x_height]+1); x7=x0; + pickup fine.nib; + if hefty: bot y7=0; pos5(cap_stem,0); x5=x0; top y5=tiny.top y0; + else: pos5(cap_hair,0); pos8(cap_stem,0); + y7=.5bar_height; z5l=z8l; z8=z7; x9=x8r; bot y9=0; + filldraw z8l{down}..{4(x9-x8),y9-y8}z9--z8r--cycle; fi % spur + pos1(cap_hair,0); pos2(cap_band,90); + pos3(cap_curve,180); pos4(cap_band,270); + rt x1r=hround(w-2u); lft x3r=hround u; x2=x4=.55[x3,x1]; + top y2r=cap_height+o; bot y4r=-o; y3=.5[y2,y4]; + bot y1=min(vround max(.6cap_height,x_height-.5vair),bot y2l-eps); + (x2l',y2l)=whatever[z2r,z1l]; x2l:=min(x2l',x2l+.5u); + (x4l',y4l)=whatever[z4r,z5l]; x4l:=min(x4l',x4l+.5u); + filldraw stroke z1e{x2-x1,10(y2-y1)} + ...pulled_arc.e(2,3) & pulled_arc.e(3,4)...z5e{up}; % arc + pos6(.3[fine.breadth,cap_hair],0); x6r=x1r; top y6=cap_height+o; + x1r-x1'=2cap_curve-fine; y1'=y1; + path upper_arc; upper_arc=z1{x2-x1,10(y2-y1)}..z2{left}; + numeric t; t=xpart(upper_arc intersectiontimes (z6l--z1')); + filldraw z1r--z6r--z6l--subpath(t,0) of upper_arc--cycle; % barb + pickup tiny.nib; filldraw stroke z0e--z7e; % stem + dish_serif(0,7,a,1/3,max(cap_jut,2.25u),b,1/3,1.25u); % serif + math_fit(-.3cap_height#*slant-.5u#,ic#); +else: beginchar(oct "001",12u#,body_height#,0); + italcorr cap_height#*slant-.5u#; + adjust_fit(0,0); + pickup fine.nib; pos1(1.2flare,80); pos2(slab,90); + pos3(cap_curve,180); pos4(slab,270); pos5(flare,270); + rt x1r=hround(w-1.35u); x2=x4=.5w+u; + lft x3r=hround max(u,2u-.5cap_curve); rt x5l=hround(w-1.2u); + top y1r=vround .93cap_height+o; top y2r=cap_height+o; y3=.5cap_height; + bot y4r=-o; bot y5r=vround .07cap_height-o; + filldraw stroke rterm.e(2,1,right,.9,4)&super_arc.e(2,3) + & super_arc.e(3,4) & term.e(4,5,right,1,4); % arc and terminals + pos0(stem,0); pos7(stem,0); + z7r=z5r; x0=x7; top y0=1+vround .35[bar_height,x_height]; + filldraw stroke z0e--z7e; % stem + pos8(cap_bar,90); pos9(cap_bar,90); + z0r=z9r; y8=y9; lft x8=hround x4; + filldraw stroke z8e--z9e; % bar + math_fit(-.3cap_height#*slant-.5u#,.5ic#); fi +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=.85[cap_height+o,body_height]-dot_top; +dot_accent(2l,g,dot_shift); +penlabels(0,1,1',2,3,4,5,6,7,8,9); endchar; + +cmchar "The letter HHA"; +dot_sharp_values; +beginchar(oct "002",13u#+width_adj#,cap_height#,desc_depth#); +define_whole_blacker_pixels(dot_diam); +italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#); +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +pos3(cap_stem,0); pos4(cap_stem,0); +lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); x3=x4=w-x1; +top y1=top y3=h; bot y2=bot y4=0; +filldraw stroke z1e--z2e; % left stem +filldraw stroke z3e--z4e; % right stem +penpos5(cap_bar,90); penpos6(cap_bar,90); +x5=x1; x6=x3; y5=y6=.52h; +fill stroke z5e--z6e; % bar +if serifs: numeric inner_jut; + if rt x1r+cap_jut+.5u+1<=lft x3l-cap_jut: inner_jut=cap_jut; + else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi + dish_serif(1,2,a,1/3,cap_jut,b,1/3,inner_jut); % upper left serif + dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif + dish_serif(3,4,e,1/3,inner_jut,f,1/3,cap_jut); % upper left serif + dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi % lower left serif +math_fit(0,.5ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x7=1/2[x2,x4]; dot_accent(7,k,dot_shift); +penlabels(1,2,3,4,5,6); endchar; + +cmchar "The letter dotted I"; +dot_sharp_values; +beginchar(oct "003",max(6u#,4u#+cap_stem#),body_height#,0); +italcorr cap_height#*slant-.25u#; +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=cap_height; bot y2=0; +filldraw stroke z1e--z2e; % stem +if serifs: dish_serif(1,2,a,1/3,1.05cap_jut,b,1/3,1.05cap_jut); % upper serif + dish_serif(2,1,c,1/3,1.05cap_jut,d,1/3,1.05cap_jut); fi % lower serif +math_fit(0,.5ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=.85[cap_height+o,body_height]-dot_top; +dot_accent(2,g,dot_shift); +penlabels(1,2); endchar; + +cmchar "The letter QAF"; +dot_sharp_values; +beginchar(oct "004",13.5u#,cap_height#,desc_depth#); +italcorr cap_height#*slant-.5u#; +adjust_fit(cap_serif_fit#,cap_serif_fit#); +numeric right_jut,stem[],alpha[]; +if serifs: right_jut=.6cap_jut; +else: right_jut=.4tiny; fi +pickup tiny.nib; pos1(fudged.cap_stem,0); pos2(fudged.cap_stem,0); +lft x1l=lft x2l=hround max(2u,3u-.5fudged.cap_stem); top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +stem2=max(tiny.breadth,fudged.cap_stem-3stem_corr); +stem1=max(tiny.breadth,fudged.hair if hefty:-3stem_corr fi); +top y3=h; rt x3r=hround(r-letter_fit-u-right_jut); +bot y6=0; rt x6r=hround(r-letter_fit-.75u-right_jut); +x4=x1; y4=1/3h; +alpha1=diag_ratio(1,.5(stem1-tiny),y3-y4,x3r-x4); +penpos3(alpha1*(stem1-tiny),0); penpos4(whatever,-90); +alpha2=diag_ratio(1,.5(stem2-tiny),y1-y6,x6r-x1); +penpos6(alpha2*(stem2-tiny),0); +forsuffixes $=l,r: y3'$=h; y6'$=0; z4$=z3'$+whatever*(z3-z4); + z5$=z6'$+whatever*(z1-z6)=whatever[z3,z4]; endfor +z5=.5[z5l,z5r]; +z3'r=z3r+penoffset z3-z4 of currentpen+whatever*(z3-z4); +% we have also |z3'l=z3l+penoffset z4-z3 of currentpen+whatever*(z3-z4)|;\] +z6'r=z6r+penoffset z1-z6 of currentpen+whatever*(z1-z6); +z6'l=z6l+penoffset z6-z1 of currentpen+whatever*(z1-z6); +fill z4r--diag_end(4r,3'r,1,.5,3'l,4l)--z4l--cycle; % upper diagonal +fill z5l--diag_end(5l,6'l,.5,1,6'r,5r)--z5r--cycle; % lower diagonal +if serifs: numeric inner_jut; + if rt x2r+cap_jut+.5u+1<=lft x6l-cap_jut: inner_jut=cap_jut; + else: rt x2r+cap_jut+.5u+1=lft x6l-inner_jut; fi + dish_serif(1,2,a,1/3,cap_jut,b,1/3,cap_jut); % upper stem serif + dish_serif(2,1,c,1/3,cap_jut,d,1/3,cap_jut); % lower stem serif + dish_serif(3,4,e,2/3,1.2cap_jut,f,1/2,right_jut)(dark); % upper diagonal serif + dish_serif(6,5,g,1/2,inner_jut,h,1/3,right_jut)(dark);fi % lower diagonal serif +math_fit(0,.5ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x7=1/2[x2,x6]; dot_accent(7,q,dot_shift); +penlabels(1,2,3,4,5,6); endchar; + +cmchar "The letter dotted O"; +dot_sharp_values; +beginchar(oct "005",14u#-width_adj#,body_height#,0); +italcorr .7cap_height#*slant-.5u#; +adjust_fit(0,0); +penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90); +penpos2(cap_curve,180); penpos4(cap_curve,0); +if monospace: x2r=hround 1.5u; + interim superness:=sqrt superness; % make |"O"|, not |"0"| +else: x2r=hround u; fi +x4r=w-x2r; x1=x3=.5w; y1r=cap_height+o; y3r=-o; +y2=y4=.5cap_height-vair_corr; y2l:=y4l:=.52cap_height; +penstroke pulled_super_arc.e(1,2)(.5superpull) + & pulled_super_arc.e(2,3)(.5superpull) + & pulled_super_arc.e(3,4)(.5superpull) + & pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl +math_fit(-.3cap_height#*slant-.5u#,ic#-.5u#); +numeric clearance, dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +clearance=hround((w-dot_size-cap_curve)/2); x5=w-x6=min(clearance,5.25u); +dot_shift=.85[cap_height+o,body_height]-dot_top; +dot_accent(5,a,dot_shift); +dot_accent(6,b,dot_shift); +penlabels(1,2,3,4); endchar; + +cmchar "The letter SAD"; +dot_sharp_values; +beginchar(oct "006",10u#,cap_height#,desc_depth#); +italcorr cap_height#*slant-u#; +adjust_fit(0,0); +numeric theta; theta=90-angle(50u,h); slope:=-h/50u; % angle at middle +numeric s_slab; s_slab=if serifs:slab else:vround .2[slab,cap_stem] fi; +numeric ess'; ess'=max(fine.breadth,cap_ess); +pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90); +pos0(ess',theta); pos7(s_slab,-90); +x2+x7=2x0=w; x7-x2=if serifs: u else: 0 fi; top y2l=h+o; bot y7r=-o; +y0=.52h; lft x3l=hround u; rt x6r=hround(w-u); +x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +if serifs: pos1(hair,180); pos8(hair,180); + rt x1l=hround(w-1.5u); lft x8r=hround u; + bot y1=vround 2/3h+1; top y8=vround 1/3h-1; + filldraw stroke z1e{x2-x1,10(y2-y1)}....{left}z2e; % upper arc + filldraw stroke z7e{left}....{up}z8e; % lower arc + path upper_arc, lower_arc; + upper_arc=z1{x2-x1,10(y2-y1)}....{left}z2; + lower_arc=z7{left}....{up}z8; + pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0); + x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; + x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; + numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); + filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb + t:=xpart(lower_arc intersectiontimes(z9r--z8')); + filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb +else: pos1(1.2flare,-100); pos8(1.2flare,-100); + x1l=good.x(x1l+w-1.75u-rt x1); lft x8r=hround .8u; + top y1l=vround .93h+o; bot y8r=vround .1h-o; + filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal + filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal +math_fit(0,.5ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +dot_accent(7,q,dot_shift); +penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar; + +cmchar "The letter TTA"; +dot_sharp_values; +beginchar(oct "007",13u#-width_adj#,cap_height#,desc_depth#); +italcorr cap_height#*slant-beak_jut#-.25u#; +adjust_fit(0,0); +h:=vround(h-2stem_corr); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +pickup crisp.nib; pos3(slab,90); pos4(hair,0); +top y3r=h; x3=x1; rt x4r=hround(w-.65u); y4=good.y(y3l-beak)-eps; +arm(3,4,e,beak_darkness,.7beak_jut); % right arm and beak +pos5(hair,180); x5=w-x4; y5=y4; +arm(3,5,f,beak_darkness,-.7beak_jut); % left arm and beak +if serifs: dish_serif(2,1,c,1/3,1.414cap_jut,d,1/3,1.414cap_jut); % lower serif + nodish_serif(1,2,a,1/3,.5cap_jut,b,1/3,.5cap_jut); fi % upper bracketing +math_fit(-.75cap_height#*slant,ic#-2.5u#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +dot_accent(2,g,dot_shift); +penlabels(1,2,3,4,5,6); endchar; + +cmchar "The letter dotted U"; +dot_sharp_values; +beginchar(oct "010",13u#+.5width_adj#,body_height#,0); +italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#); +if monospace: adjust_fit(cap_serif_fit#-.5u#,cap_serif_fit#-.5u#) +else: adjust_fit(cap_serif_fit#,cap_serif_fit#) fi; +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +pos2'(cap_stem,180); z2'=z2; +pos3(cap_band,-90); +pos4(cap_hair,0); pos5(cap_hair,0); +x1=x2; x3=.5[x1,x5]; x4=x5; x1l=w-x5r; +top y1=top y5=cap_height; y2=y4=1/3cap_height; bot y3r=-o; +lft x1l=hround max(2u,3u-.5cap_stem); +filldraw stroke z1e--z2e; % left stem +filldraw stroke pulled_arc.e(2',3) + & pulled_arc.e(3,4)&z4e--z5e; % arc and right stem +if serifs: dish_serif(1,2,a,1/3,cap_jut,b,1/3,cap_jut); % left serif + dish_serif(5,4,c,1/2,cap_jut,d,1/2,cap_jut)(dark); fi % right serif +math_fit(-cap_serif_fit#-.3cap_height#*slant-min(cap_height#*slant,u#), + max(.5ic#-.5u#,0)); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +x6=4.75u; w-x7=if dish > 0: 3.75 else: 4.75 fi u; +dot_shift=.85[cap_height+o,body_height]-dot_top; +dot_accent(6,f,dot_shift); +dot_accent(7,g,dot_shift); +penlabels(1,2,3,4,5); endchar; + +cmchar "The letter ZAD"; +dot_sharp_values; +beginchar(oct "011",11u#,body_height#,0); +italcorr cap_height#*slant-.5u#; +adjust_fit(0,0); +numeric arm_thickness[],z_stem; +if hefty: arm_thickness1=Vround(slab-vair_corr); arm_thickness2=slab; + z_stem=.8[vair,cap_stem]; +else: arm_thickness1=slab; arm_thickness2=vround(slab+vair_corr); + z_stem=.9[vair,cap_stem]; fi +pickup tiny.nib; x3l=x4l=w-x1r=w-x2r; lft x3l=hround u; +top y1=cap_height; y2=min(y1,cap_height-2/3arm_thickness1); +bot y4=0; y3=max(y4,2/3arm_thickness2); +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z2 of currentpen; +fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l + ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r + ---cycle; % diagonal +pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180); +top y5r=cap_height; x5=x1; lft x6r=hround 1.25u; y6=good.y(y5l-beak)-eps; +arm(5,6,a,beak_darkness**.8,-.4beak_jut); % upper arm and beak +pos7(arm_thickness2,-90); pos8(hair,0); +bot y7r=0; x7=x4; rt x8r=hround(w-.9u); y8=good.y(y7l+1.2beak)+eps; +arm(7,8,b,beak_darkness**.9,.6beak_jut); % lower arm and beak +math_fit(0,.5ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +x9=5/9[x6,x5]; +dot_shift=.85[cap_height+o,body_height]-dot_top; +dot_accent(9,f,dot_shift); +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "The letter ZZA"; +dot_sharp_values; +beginchar(oct "012",11u#,cap_height#,desc_depth#); +italcorr cap_height#*slant-.5u#; +adjust_fit(0,0); +numeric arm_thickness[],z_stem; +if hefty: arm_thickness1=Vround(slab-vair_corr); arm_thickness2=slab; + z_stem=.8[vair,cap_stem]; +else: arm_thickness1=slab; arm_thickness2=vround(slab+vair_corr); + z_stem=.9[vair,cap_stem]; fi +pickup tiny.nib; x3l=x4l=w-x1r=w-x2r; lft x3l=hround u; +top y1=h; y2=min(y1,h-2/3arm_thickness1); +bot y4=0; y3=max(y4,2/3arm_thickness2); +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z2 of currentpen; +fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l + ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r + ---cycle; % diagonal +pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180); +top y5r=h; x5=x1; lft x6r=hround 1.25u; y6=good.y(y5l-beak)-eps; +arm(5,6,a,beak_darkness**.8,-.4beak_jut); % upper arm and beak +pos7(arm_thickness2,-90); pos8(hair,0); +bot y7r=0; x7=x4; rt x8r=hround(w-.9u); y8=good.y(y7l+1.2beak)+eps; +arm(7,8,b,beak_darkness**.9,.6beak_jut); % lower arm and beak +math_fit(0,.5ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x9=4/9[x3,x8]; dot_accent(9,c,dot_shift); +penlabels(1,2,3,4,5,6,7,8); endchar; diff --git a/language/turkish/mf/tkdtil.mf b/language/turkish/mf/tkdtil.mf new file mode 100644 index 0000000000..1ab0755c60 --- /dev/null +++ b/language/turkish/mf/tkdtil.mf @@ -0,0 +1,269 @@ +% Computer Modern italic lower case with dotted diacriticals for Turkish etc. +% These letters were originally coded by D. E. Knuth in November, 1979, +% inspired by the Monotype faces used in {\sl The Art of Computer Programming}. + +% Sans serif designs by Richard Southall were added in April, 1982. +% The programs were revised for the new \MF\ conventions in 1985. + +% Dotted diacriticals added by P. A. MacKay, January, 1987. + +if unknown accsub: input accsub fi + +% Character codes \020 through \032 are generated. + +cmchar "Italic letter dad"; +dot_sharp_values; +beginchar(oct"020",9u#,asc_height#,desc_depth#); +italcorr max(1/3x_height#*slant+.5hair#+.5u#, + h#*slant+.5stem#-2u#) if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +x4+.5stem=hround(w-2.5u+.5stem); +top y1r=x_height+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +x5=x0; x7=w; hook_out(5,6,7); % closing hook +pickup tiny.nib; pos5'(stem,0); pos4(stem,0); +z5'=z5; top y4=h; filldraw stroke z4e--z5'e; % stem +sloped_serif.l(4,5',a,1/3,jut,serif_drop); % serif +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x8=.5w; dot_accent(8,g,dot_shift); +penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "Italic letter ghayn"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct "021",8u#,min(asc_height#,10/7x_height#+.5dot_diam#),desc_depth#); +define_whole_blacker_pixels(dot_diam); +italcorr x_height#*slant+.5stem#-u#; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +x4+.5stem=hround(w-1.5u+.5stem); +top y1r=x_height+oo; bot y3r=0; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +pos4(stem,0); y4+.5stem=vround .98x_height; +pos5(stem,0); x5=x4; y5=-1/3d; +pos6(vair,-90); pos7(hair,-180); pos8(flare,-180); +bot y6r=-d-oo; y8-.5flare=vround -.9d; +lft x8r=hround(2u-.5flare); x6=x1; bulb(6,7,8); % bulb +filldraw circ_stroke z4e---z5e...{left}z6e; % stem and arc +math_fit(-min(.3x_height#*slant+.5curve#-u#,1.5u#-desc_depth#*slant), + ic#-1/3x_height#*slant); +pickup tiny.nib; +pos9(dot_diam,0); pos10(dot_diam,90); +x9=.55[x2r,x4r]; % +top y10r=h+1; +if bot y10l-top y1<slab: y10l:=min(y10r-eps,y1+tiny+slab); fi +x9=x10; y9=.5[y10l,y10r]; dot(9,10); % dot +penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Italic letter hha"; +dot_sharp_values; +beginchar(oct "022",9u#,asc_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(0,0); pickup tiny.nib; +pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; +filldraw circ_stroke z2e--z1e; % left stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem); +x5=x4-.25u; ital_arch(2,3,4); % arch +x7=w; hook_out(5,6,7)(skewed); % closing hook +filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem +math_fit(0,ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x8=.5w; dot_accent(8,g,dot_shift); +penlabels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Italic letter dotted i"; +beginchar(oct "023",5u#,min(asc_height#,10/7x_height#+.5flare#),0); +italcorr max(1/3x_height#*slant+.5hair#+.5u#,h#*slant+.5flare#-2u#); +adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib; +x0=0; x5=w; x2=.5w+.25u; x3=.5w-.25u; +hook_in(0,1,2)(skewed); hook_out(3,4,5)(skewed); % hooks +filldraw stroke z2e--z3e; % stem +pos8(flare,0); pos9(flare,90); +x8=.5w if not monospace:-.4(h-x_height)*slant fi; top y9r=h+1; +if bot y9l-top y1<slab: y9l:=min(y9r-eps,y1+fine+slab); fi +x8=x9; y8=.5[y9l,y9r]; dot(8,9); % dot +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); +penlabels(0,1,2,3,4,5,8,9); endchar; + +cmchar "Italic letter qaf"; +dot_sharp_values; +beginchar(oct "024",8u#,asc_height#,desc_depth#); +italcorr x_height#*slant; +adjust_fit(0,0); pickup tiny.nib; +pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; +filldraw circ_stroke z2e--z1e; % left stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; pos3(vair,90); x3=x1; y3=bar_height; +pos4(vair,90); x4=w-2u; top y4r=x_height+oo; +filldraw stroke z3e{right}..{right}z4e; % upper diagonal +pos5(hair,0); pos6(flare,0); +rt x5r=hround(w-.5u); y5+.5flare=vround(bot y4l-.03x_height); +bulb(4,5,6); % bulb +pos7(stem,0); pos8(vair,90); pos9(hair,180); +x9+.5hair=hround(w+.5hair-eps); y9=1/3x_height; +lft x7l=hround(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo; +filldraw stroke z3e{right}...z7e{down} + ...z8e{right}...{up}z9e; % lower diagonal +math_fit(0,1/3x_height#*slant+.5hair#+.5u#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x10=.5w; dot_accent(10,g,dot_shift); +penlabels(0,1,2,3,4,5,6,8,9); endchar; + +cmchar "Italic letter dotted o"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct "025",9u#,min(asc_height#,10/7x_height#+.5dot_diam#),0); +define_whole_blacker_pixels(dot_diam); +italcorr 1/3[x_height#,asc_height#]*slant+.5curve#-u# if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360); +x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2; +top y1r=x_height+oo; y2=y4=.5[y1,y3]; bot y3r=-oo; +filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +pickup tiny.nib; +pos7(dot_diam,0); pos8(dot_diam,90); +pos9(dot_diam,0); pos10(dot_diam,90); +x7=x1-.8dot_diam; % +top y8r=h+1; +if bot y8l-top y1<slab: y8l:=y10l:=min(y8r-eps,y1+tiny+slab); fi +x7=x8; y7=y9=.5[y8l,y8r]; dot(7,8); % dot +x9=x10=x7+1.6dot_diam; y9=y10; dot(9,10); +penlabels(1,2,3,4,7,8,9,10); endchar; + +cmchar "Italic letter sad"; +dot_sharp_values; +beginchar(oct "026",5.25u#+max(1.75u#,flare#),x_height#,desc_depth#); +italcorr x_height#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle +pos2(vair,-90); pos0(max(fine.breadth,ess),theta); pos7(vair,-90); +x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo; +y0-.5ess=y7l+.55(y2r-y7l-ess); +lft x3l=hround u-eps; rt x6r=hround(w-.5u)+eps; +x3r-x3l=x6r-x6l=hround .5[vair,ess]-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +interim superness:=more_super; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +pos1(hair,0); pos10(hround .75[hair,flare],0); +pos2'(vair,90); z2'=z2; +pos8(hair,-180); pos9(flare,-180); +rt x10r=hround(w-u)+2eps; lft x9r=hround .5u-2eps; y10=.78h; y9=.25h; +bulb(2',1,10); bulb(7,8,9); % bulbs +math_fit(0,ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x11=.5[x3l,x6r]; % Centered on outside edges of curves +dot_accent(11,g,dot_shift); +penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Italic letter tta"; +dot_sharp_values; +beginchar(oct "027",5.5u#,min(asc_height#,10/7x_height#),desc_depth#); +italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant-.25u#); +adjust_fit(if monospace:u#,u# else:0,0 fi); pickup fine.nib; +pos1(stem,0); lft x1l=hround(2u-.5stem); y1+.5stem=h+oo; +x2=x1; x4=w; hook_out(2,3,4); % closing hook +filldraw circ_stroke z1e--z2e; % stem +pickup crisp.nib; pos5(bar,90); pos6(bar,90); +lft x5=hround-.75u; rt x6=hround(w-.75u); top y5r=top y6r=x_height; +filldraw stroke z5e--z6e; % crossbar +math_fit(1.25u#-x_height#*slant,ic#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x7=.65[x2,x3]; % A little left of the low point of hook +dot_accent(7,g,dot_shift); +penlabels(1,2,3,4,5,6); endchar; + +cmchar "Italic letter dotted u"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct "030",9.5u#,min(asc_height#,10/7x_height#+.5dot_diam#),0); +define_whole_blacker_pixels(dot_diam); +italcorr 1/3[x_height#,asc_height#]*slant; +adjust_fit(0,0); pickup fine.nib; interim superness:=more_super; +x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +hook_in(0,1,2)(skewed); % opening hook +pos2'(stem,-180); z2'=z2; +pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5]; +pos6(stem,0); rt x6r=hround(w-2.5u+.5stem); +x5=x6=x7; x9=w; hook_out(7,8,9); % closing hook +y3=.7[y4,y5]; bot y4r=-oo; y5=.57x_height; y6+.5stem=x_height; +filldraw stroke z2'e{-u,-x_height} + ...super_arc.e(3,4)...{up}z5e; % left stem and arc +filldraw circ_stroke z6e--z7e; % right stem +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); +pickup tiny.nib; +pos11(dot_diam,0); pos12(dot_diam,90); +pos13(dot_diam,0); pos14(dot_diam,90); +x11=x2; % +top y12r=h+1; +if bot y12l-top y1<slab: y12l:=y14l:=min(y12r-eps,y1+tiny+slab); fi +x11=x12; y11=y13=.5[y12l,y12r]; dot(11,12); % dot +x13r=max(x11+1.9dot_diam,x6); +x13=x14; y13=y14; dot(13,14); +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,14); endchar; + +cmchar "Italic letter zad"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar(oct "031",5.5u#+max(1.5u#,stem#),min(asc_height#,10/7x_height#+.5dot_diam#),0); +define_whole_blacker_pixels(dot_diam); +italcorr x_height#*slant+.5hair#; +adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib; +pos1(hair,0); pos2(stem,-90); pos3(vair,-90); pos4(hair,0); +lft x1l=hround(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=hround(w-.5u); +top y1=.78x_height; top y2l=top y4=x_height+oo; y3=.825x_height; +pos5(hair,0); pos6(vair,-90); pos7(stem,-90); pos8(hair,0); +x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=hround(w+.5hair-eps); +bot y5=bot y7r=-oo; y6=.175x_height; bot y8=.31x_height; +pair p; p=(z4-z5) yscaled 2; +filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e; % upper bar +filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e; % lower bar +filldraw stroke z5e{p}..{p}z4e; % diagonal +math_fit(0,1/3x_height#*slant+.5hair#+.5u#); +pickup tiny.nib; +pos9(dot_diam,0); pos10(dot_diam,90); +x9=.55[x3,x1]; % Pull the dot over just a bit to the right. +top y10r=h+1; +if bot y10l-top y1<slab: y10l:=min(y10r-eps,y1+tiny+slab); fi +x9=x10; y9=.5[y10l,y10r]; dot(9,10); % dot +penlabels(1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Italic letter zza"; +dot_sharp_values; +beginchar(oct "032",5.5u#+max(1.5u#,stem#),x_height#,desc_depth#); +italcorr x_height#*slant+.5hair#; +adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib; +pos1(hair,0); pos2(stem,-90); pos3(vair,-90); pos4(hair,0); +lft x1l=hround(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=hround(w-.5u); +top y1=.78h; top y2l=top y4=h+oo; y3=.825h; +pos5(hair,0); pos6(vair,-90); pos7(stem,-90); pos8(hair,0); +x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=hround(w+.5hair-eps); +bot y5=bot y7r=-oo; y6=.175h; bot y8=.31h; +pair p; p=(z4-z5) yscaled 2; +filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e; % upper bar +filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e; % lower bar +filldraw stroke z5e{p}..{p}z4e; % diagonal +math_fit(0,1/3x_height#*slant+.5hair#+.5u#); +numeric dot_shift, dot_top; +define_whole_blacker_pixels(dot_top); +dot_shift=-dot_top-desc_depth; +x9=.8[x5,x7]; dot_accent(9,g,dot_shift); +penlabels(1,2,3,4,5,6,7,8); endchar; diff --git a/language/turkish/mf/tkital.mf b/language/turkish/mf/tkital.mf new file mode 100644 index 0000000000..01f89b86ee --- /dev/null +++ b/language/turkish/mf/tkital.mf @@ -0,0 +1,457 @@ +% Computer Modern Italic lower case for Turkish: +% This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979, +% inspired by the Monotype faces used in {\sl The Art of Computer Programming}. +% The programs were revised for the new \MF\ conventions in 1985. + +% Differs from itall.mf in that the i is undotted. +% Adapted from itall.mf by P. A. MacKay, January, 1987. + +% Character codes \0141 through \0172 are generated. + +cmchar "Italic letter a"; +beginchar("a",9u#,x_height#,0); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +pos4(stem,0); x4=x0; y4+.5stem=vround .98h; +x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +rt x4r=hround(w-2.5u+.5stem); +top y1r=h+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +x5=x4; x7=w; hook_out(5,6,7); % closing hook +filldraw circ_stroke z4e--z5e; % stem +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "Italic letter b"; +beginchar("b",8u#,asc_height#,0); +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup tiny.nib; +pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(1.5u-.5stem); top y1=h; y2=.5x_height; +filldraw stroke z1e--z2e; % stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; pos2'(stem,-180); pos3(vair,-90); +pos4(curve,0); pos5(vair,90); pos0(hair,180); +z0=z2=z2'; x3=x5=.5[x2,x4]; rt x4r=hround(w-1.5u+.5curve); +bot y3r=-oo; top y5r=x_height+oo; y4=y2; +filldraw stroke pulled_arc.e(2',3) & pulled_arc.e(3,4) + & pulled_arc.e(4,5) & super_arc.e(5,0); % bowl +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +penlabels(0,1,2,3,4,5); endchar; + +cmchar "Italic letter c"; +beginchar("c",8u#,x_height#,0); +italcorr if math_fitting:1/3x_height#*slant else:x_height#*slant-u# fi; +adjust_fit(0,0); pickup fine.nib; +pos0(flare,0); pos1(hair,0); pos2(vair,90); +pos3(curve,180); pos4(vair,270); pos5(hair,320); +x2=x4=.5(w+u); rt x1r=max(rt x2,hround(w-u))+eps; +lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5; +y1=.5[bar_height,h]; top y2r=h+oo; bulb(2,1,0); % bulb +bot y4r=-oo; y3=.5[y2,y4]; top y5l=vround .5bar_height; y6=bar_height; +path p; p=z4{right}..z5..z6; +filldraw stroke pulled_arc.e(2,3) + & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Italic letter d"; +beginchar("d",9u#,asc_height#,0); +italcorr max(1/3x_height#*slant+.5hair#+.5u#, + h#*slant+.5stem#-2u#) if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +x4+.5stem=hround(w-2.5u+.5stem); +top y1r=x_height+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +x5=x0; x7=w; hook_out(5,6,7); % closing hook +pickup tiny.nib; pos5'(stem,0); pos4(stem,0); +z5'=z5; top y4=h; filldraw stroke z4e--z5'e; % stem +sloped_serif.l(4,5',a,1/3,jut,serif_drop); % serif +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "Italic letter e"; +beginchar("e",8u#,x_height#,0); +italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); +adjust_fit(0,0); pickup fine.nib; +numeric heavy_hair; heavy_hair=hround .2[hair,stem]; +pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90); +pos3(curve,180); pos4(vair,270); pos5(hair,320); +x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+u); +lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5; +y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo; +top y5l=vround .5bar_height; path p; p=z4{right}..z5..z6; +filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3) + & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Italic letter f"; +beginchar("f",max(1.5u#,stem#)+max(3.5u#,2flare#),asc_height#,desc_depth#); +italcorr asc_height#*slant+.75u#; +adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib; +numeric theta; z88=(.5w-.5u,h); z89=(.5w+.5u,-d); theta=angle(z88-z89); +pos0(flare,0); pos1(hair,0); pos2(vair,90); +pos3(.5[hair,stem],180); pos4(stem,theta+90); +pos5(stem,theta-90); pos6(.5[hair,stem],0); +pos7(vair,-90); pos8(hair,-180); pos9(flare,-180); +rt x1r=hround(w+.25u); lft x8r=hround-.35u; x2=.6[x1,x4]; x7=.6[x8,x5]; +y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo; +y4=.25[x_height,h]; y5=.5[-d,y4]; +z4=whatever[z88,z89]; z5=whatever[z88,z89]; +x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7]; +bulb(2,1,0); bulb(7,8,9); % bulbs +filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc +filldraw z4r--z5l--z5r--z4l--cycle; % stem +filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc +pickup crisp.nib; pos20(bar,90); pos21(bar,90); +top y20r=top y21r=x_height; +lft x20=lft x4r-.5stem-u; rt x21=rt x4l+.5stem+1.5u; +filldraw stroke z20e--z21e; % crossbar +math_fit(desc_depth#*slant+u#,x_height#*slant); +penlabels(0,1,2,3,4,5,6,7,8,9,20,21,88,89); endchar; + +cmchar "Italic letter g"; +beginchar("g",8u#,x_height#,desc_depth#); +italcorr x_height#*slant+.5stem#-u#; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +x4+.5stem=hround(w-1.5u+.5stem); +top y1r=h+oo; bot y3r=0; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +pos4(stem,0); y4+.5stem=vround .98h; +pos5(stem,0); x5=x4; y5=-1/3d; +pos6(vair,-90); pos7(hair,-180); pos8(flare,-180); +bot y6r=-d-oo; y8-.5flare=vround -.9d; +lft x8r=hround(2u-.5flare); x6=x1; bulb(6,7,8); % bulb +filldraw circ_stroke z4e---z5e...{left}z6e; % stem and arc +math_fit(-min(.3x_height#*slant+.5curve#-u#,1.5u#-desc_depth#*slant), + ic#-1/3x_height#*slant); penlabels(0,1,2,3,4,5,6,7,8); endchar; + +cmchar "Italic letter h"; +beginchar("h",9u#,asc_height#,0); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(0,0); pickup tiny.nib; +pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; +filldraw circ_stroke z2e--z1e; % left stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem); +x5=x4-.25u; ital_arch(2,3,4); % arch +x7=w; hook_out(5,6,7)(skewed); % closing hook +filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem +math_fit(0,ic#); penlabels(1,2,3,4,5,6,7); endchar; + +cmchar "Italic letter i"; +beginchar("i",5u#,x_height#,0); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib; +x0=0; x5=w; x2=.5w+.25u; x3=.5w-.25u; +hook_in(0,1,2)(skewed); hook_out(3,4,5)(skewed); % hooks +filldraw stroke z2e--z3e; % stem +penlabels(0,1,2,3,4,5); endchar; + +cmchar "Italic letter j"; +beginchar("j",5u#,min(asc_height#,10/7x_height#+.5flare#),desc_depth#); +italcorr h#*slant+.5stem#-u#; +adjust_fit(if monospace:2u#,.5u# else: 0,0 fi); pickup fine.nib; +x0=0; x2=x3; pos3(stem,0); lft x3l=hround(w-1.5u-.5stem); +hook_in(0,1,2); % opening hook +pos4(vair,-90); pos5(hair,-180); pos6(flare,-180); +bot y3=-1/3d; bot y4r=-d-oo; y6-.5flare=-vround.9d; +x4=1/3(w-u); lft x5r=min(hround-.5u,lft x5r+x4-x5l-eps); +filldraw stroke z2e---z3e...{left}z4e; % stem and arc +bulb(4,5,6); % bulb +pos8(flare,0); pos9(flare,90); +rt x8r=rt x2r if not monospace:-.6(h-x_height)*slant fi; top y9r=h+1; +if bot y9l-top y1<slab: y9l:=min(y9r-eps,y1+fine+slab); fi +x8=x9; y8=.5[y9l,y9r]; dot(8,9); % dot +math_fit(desc_depth#*slant,x_height#*slant+.5stem#-u#); +penlabels(0,1,2,3,4,5,6,8,9); endchar; + +cmchar "Italic letter k"; +beginchar("k",8u#,asc_height#,0); +italcorr x_height#*slant; +adjust_fit(0,0); pickup tiny.nib; +pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; +filldraw circ_stroke z2e--z1e; % left stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; pos3(vair,90); x3=x1; y3=bar_height; +pos4(vair,90); x4=w-2u; top y4r=x_height+oo; +filldraw stroke z3e{right}..{right}z4e; % upper diagonal +pos5(hair,0); pos6(flare,0); +rt x5r=hround(w-.5u); y5+.5flare=vround(bot y4l-.03x_height); +bulb(4,5,6); % bulb +pos7(stem,0); pos8(vair,90); pos9(hair,180); +x9+.5hair=hround(w+.5hair-eps); y9=1/3x_height; +lft x7l=hround(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo; +filldraw stroke z3e{right}...z7e{down} + ...z8e{right}...{up}z9e; % lower diagonal +math_fit(0,1/3x_height#*slant+.5hair#+.5u#); +penlabels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Italic letter l"; +beginchar("l",4u#,asc_height#,0); l_width#:=4u#; +italcorr max(1/3x_height#*slant+.5hair#+.5u#, + asc_height#*slant+.5stem#-2u#) if math_fitting:+.5u# fi; +adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib; +x2-.5stem=hround(1.5u-.5stem); x4=w; hook_out(2,3,4); % closing hook +pickup tiny.nib; pos1(stem,0); pos2'(stem,0); z2'=z2; +top y1=h; x1=x2; filldraw stroke z1e--z2e; % stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +math_fit(-.5u#,1/3x_height#*slant+.5hair#+u#); penlabels(1,2,3,4); endchar; + +cmchar "Italic letter m"; +beginchar("m",15u#,x_height#,0); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(if monospace:-1.5u#,-2u# else: 0,0 fi); pickup fine.nib; +numeric shaved_stem; shaved_stem=mfudged.stem; +save stem; stem=shaved_stem; +pos2(stem,0); x1=x2; +if monospace: pos1(stem,0); lft x1l=hround(2.5u-.5stem); top y1=h; +else: x0=0; lft x2l=hround(2.5u-.5stem); + hook_in(0,a,1); fi % opening hook +y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem +x4+.5stem=hround(.5w+.5stem); ital_arch(2,3,4); % left arch +pos5(stem,0); y5=y2; x5=x4; +filldraw circ_stroke z5e--z4e; % middle stem +x7+.5stem=hround(w-2.5u+.5stem); +x8=x7-.25u; ital_arch(5,6,7); % right arch +if monospace: pos9(vair,90); x9=good.x .5[x8,w]; bot y9l=0; y8=1/3h; + pos8(stem,0); filldraw stroke z8e{-u,-x_height}...{right}z9e; % terminal +else: x9=w; hook_out(8,b,9)(skewed); fi % closing hook +filldraw stroke z7e{down}..{-u,-x_height}z8e; % right stem +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); +penlabels(0,a,1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Italic letter n"; +beginchar("n",10u#,x_height#,0); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(0,0); pickup fine.nib; +x0=0; x1=x2; pos2(stem,0); lft x2l=hround(2.5u-.5stem); y2-.5stem=-oo; +hook_in(0,a,1); % opening hook +filldraw circ_stroke z2e--z1e; % left stem +x4+.5stem=hround(w-2.5u+.5stem); x5=x4-.25u; ital_arch(2,3,4); % arch +x7=w; hook_out(5,6,7)(skewed); % closing hook +filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); +penlabels(0,a,1,2,3,4,5,6,7); endchar; + +cmchar "Italic letter o"; +beginchar("o",9u#,x_height#,0); +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360); +x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2; +top y1r=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo; +filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); penlabels(1,2,3,4); endchar; + +cmchar "Italic letter p"; +beginchar("p",9u#,x_height#,desc_depth#); +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +x0=0; x2-.5stem=hround(2.5u-.5stem); hook_in(0,1,2); % opening hook +pos4(hair,-180); pos5(vair,-90); pos6(curve,0); pos7(vair,90); +x4=x2; rt x6r=hround(w-1.5u+.5curve); x5=x7=.5[x4,x6]; +bot y5r=-oo; top y7r=h+oo; y4=y6=.5[y5,y7]; +filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6) + & pulled_arc.e(6,7) & super_arc.e(7,4); % bowl +pickup tiny.nib; pos2'(stem,0); pos3(stem,0); +z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e; % stem +dish_serif(3,2',a,1/3,.75jut,b,1/3,jut); % serif +math_fit(-min(2/3x_height#*slant-.5hair#-.5u#, + 2u#-.5stem#-desc_depth#*slant),ic#); +penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "Italic letter q"; +beginchar("q",8u#,x_height#,desc_depth#); +italcorr x_height#*slant+.5stem#-u#; +adjust_fit(0,0); pickup fine.nib; +pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270); +x0=x4; x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve); +x4+.5stem=hround(w-1.5u+.5stem)+eps; +top y1r=h+oo; bot y3r=-oo; y0=y2=.5[y1,y3]; +filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2) + & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl +pickup tiny.nib; pos4(stem,0); pos5(stem,0); +x4=x5; x6=x5r; top y6=h+oo; bot y4=-d; +y5=ypart(((x4l,0)--(x4l,y6))intersectionpoint super_arc.r(0,1)); +filldraw z6{2(x5l-x6),y5-y6}...z5l---z4l--z4r--cycle; % stem +dish_serif(4,5,a,1/3,jut,b,1/3,jut); % serif +math_fit(-.3x_height#*slant+.5curve#-u#,ic#-1/3x_height#*slant); +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +cmchar "Italic letter r"; +beginchar("r",5.5u#+max(1.75u#,flare#),x_height#,0); +italcorr x_height#*slant; +adjust_fit(if monospace:.25u#,.5u# else: 0,0 fi); pickup fine.nib; +x0=0; x2=x3; pos3(stem,0); lft x3l=hround(2.5u-.5stem); y3-.5stem=-oo; +hook_in(0,1,2); % opening hook +filldraw circ_stroke z3e--z2e; % left stem +pos3'(hair,180); z3'=z3; pos4(vair,90); pos5(hair,0); pos6(flare,0); +x4=w-.5u-max(1.75u,flare); rt x5r=hround(r-.5u); top y4r=h+oo; +filldraw stroke z3'e{up}...z4e{right}; % link +y6+.5flare=vround(bot y4l-.03x_height); bulb(4,5,6); % bulb +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-.5u#); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Italic letter s"; +beginchar("s",5.25u#+max(1.75u#,flare#),x_height#,0); +italcorr x_height#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle +pos2(vair,-90); pos0(max(fine.breadth,ess),theta); pos7(vair,-90); +x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo; +y0-.5ess=y7l+.55(y2r-y7l-ess); +lft x3l=hround u-eps; rt x6r=hround(w-.5u)+eps; +x3r-x3l=x6r-x6l=hround .5[vair,ess]-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +interim superness:=more_super; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +pos1(hair,0); pos10(hround .75[hair,flare],0); +pos2'(vair,90); z2'=z2; +pos8(hair,-180); pos9(flare,-180); +rt x10r=hround(w-u)+2eps; lft x9r=hround .5u-2eps; y10=.78h; y9=.25h; +bulb(2',1,10); bulb(7,8,9); % bulbs +math_fit(0,ic#); penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Italic letter t"; +beginchar("t",5.5u#,min(asc_height#,10/7x_height#),0); +italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant-.25u#); +adjust_fit(if monospace:u#,u# else:0,0 fi); pickup fine.nib; +pos1(stem,0); lft x1l=hround(2u-.5stem); y1+.5stem=h+oo; +x2=x1; x4=w; hook_out(2,3,4); % closing hook +filldraw circ_stroke z1e--z2e; % stem +pickup crisp.nib; pos5(bar,90); pos6(bar,90); +lft x5=hround-.75u; rt x6=hround(w-.75u); top y5r=top y6r=x_height; +filldraw stroke z5e--z6e; % crossbar +math_fit(1.25u#-x_height#*slant,ic#); penlabels(1,2,3,4,5,6); endchar; + +cmchar "Italic letter u"; +beginchar("u",9.5u#,x_height#,0); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(0,0); pickup fine.nib; interim superness:=more_super; +x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +hook_in(0,1,2)(skewed); % opening hook +pos2'(stem,-180); z2'=z2; +pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5]; +pos6(stem,0); rt x6r=hround(w-2.5u+.5stem); +x5=x6=x7; x9=w; hook_out(7,8,9); % closing hook +y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; y6+.5stem=h; +filldraw stroke z2'e{-u,-x_height} + ...super_arc.e(3,4)...{up}z5e; % left stem and arc +filldraw circ_stroke z6e--z7e; % right stem +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#); +penlabels(0,1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Italic letter v"; +beginchar("v",8u#,x_height#,0); +italcorr x_height#*slant; +adjust_fit(0,0); pickup fine.nib; interim superness:=more_super; +x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +hook_in(0,1,2)(skewed); % opening hook +pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0); +x4=.5w+u; rt x5r=hround(w-.5u); y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; +filldraw stroke z2'e{-u,-x_height}...super_arc.e(3,4) + ..tension atleast 1.05..{up}z5e; % left stem and arc +v_bulb(5,6); % closing bulb +math_fit(-2/3x_height#*slant+.5hair#+.5u#,2/3ic#); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Italic letter w"; +beginchar("w",12u#,x_height#,0); +italcorr x_height#*slant; +adjust_fit(if monospace:-1.5u#,-u# else: 0,0 fi); +pickup fine.nib; interim superness:=more_super; begingroup +forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor +x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +if monospace: pos1(vair,90); x1=good.x .5[x0,x2]; top y1r=h; y2=2/3h; + pos2(stem,0); filldraw stroke z1e{right}...{-u,-x_height}z2e; +else: hook_in(0,1,2)(skewed); fi % opening hook +pos2'(stem,-180); z2'=z2; +pos4(vair,-90); pos5(hair,0); +x4=.6[x2,x5]; x5=x6=x7; pos6(stem,-180); pos7(stem,-180); +y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; +rt x6l=hround(rt x6l+.5w+.75u-x6); y6+.5stem=h; y7=y3; +pos8(vair,-90); pos9(hair,0); +x8=w-2.75u; rt x9r=hround(w-.5u); bot y8r=-oo; y9=y5; +filldraw stroke z2'e{-u,-x_height} + ...super_arc.e(3,4)...{up}z5e; % left stem and arc +filldraw circ_stroke z6e..super_arc.e(7,8)...{up}z9e; % middle stem and arc +v_bulb(9,10); % closing bulb +endgroup; math_fit(-2/3x_height#*slant+.5hair#+.5u#,3/4ic#); +penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Italic letter x"; +beginchar("x",6.5u#+max(1.5u#,flare#),x_height#,0); +italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant+.25u#); +adjust_fit(0,0); pickup fine.nib; +pos0(hair,180); pos1(vair,90); pos2(stem,0); +pos3(stem,-180); pos4(vair,-90); pos5(hair,0); +y0=y2=2/3h; y3=y5=1/3h; top y1r=h+oo; bot y4r=-oo; +rt x2r=hround(.5w+.5stem-eps); x2=x3; +x0-.5hair=hround-.5hair; x5+.5hair=hround(w+.5hair-eps); +x1=.5[x0,x2]; x4=.5[x3,x5]; +filldraw stroke z0e{up}...pulled_arc.e(1,2); % opening hook +filldraw z2l--z3r--z3l--z2r--cycle; % stem +filldraw stroke pulled_arc.e(3,4)...{up}z5e; % closing hook +pos3'(hair,180); pos6(hair,180); pos7(vair,90); +pos8(hair,0); pos9(flare,0); +x3'l=x6l=x3l; y3'=y3; y6=3/4h; x7=.5[x8,x2]; top y7r=h+oo; +rt x8r=hround(w-.25u); y8+.5flare=vround(bot y7l-.03x_height); +filldraw stroke z3'e---z6e...{right}z7e; bulb(7,8,9); % upper link and bulb +pos2'(hair,0); pos16(hair,0); pos17(vair,-90); +pos18(hair,-180); pos19(flare,-180); +x2'l=x16l=x2l; y2'=y2; y16=1/4h; x17=.5[x18,x3]; bot y17r=-oo; +lft x18r=hround.25u; y18-.5flare=vround(top y17l+.03x_height); +filldraw stroke z2'e---z16e...{left}z17e; bulb(17,18,19); % lower link and bulb +math_fit(0,ic#); penlabels(0,1,2,3,4,5,6,7,8,9,16,17,18,19); endchar; + +cmchar "Italic letter y"; +beginchar("y",8.5u#,x_height#,desc_depth#); +italcorr x_height#*slant+.5stem#-u#; +adjust_fit(0,0); pickup fine.nib; interim superness:=more_super; +x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +hook_in(0,1,2)(skewed); % opening hook +pos2'(stem,-180); z2'=z2; +pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5]; +pos6(stem,0); rt x6r=hround(w-1.5u+.5stem); +pos7(stem,0); pos8(vair,-90); +y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; y6+.5stem=h; +y7=0; bot y8r=-d-oo; x5=x6=x7; x8=.5w; +pos9(hair,-180); pos10(flare,-180); y9=-.5d; +lft x9r=hround(2.75u-.5flare); bulb(8,9,10); % bulb +filldraw stroke z2'e{-u,-x_height} + ...super_arc.e(3,4)...{up}z5e; % left stem and arc +filldraw circ_stroke z6e---z7e...{left}z8e; % right stem and link +math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-1/3x_height#*slant); +penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Italic letter z"; +beginchar("z",5.5u#+max(1.5u#,stem#),x_height#,0); +italcorr x_height#*slant+.5hair#; +adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib; +pos1(hair,0); pos2(stem,-90); pos3(vair,-90); pos4(hair,0); +lft x1l=hround(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=hround(w-.5u); +top y1=.78h; top y2l=top y4=h+oo; y3=.825h; +pos5(hair,0); pos6(vair,-90); pos7(stem,-90); pos8(hair,0); +x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=hround(w+.5hair-eps); +bot y5=bot y7r=-oo; y6=.175h; bot y8=.31h; +pair p; p=(z4-z5) yscaled 2; +filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e; % upper bar +filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e; % lower bar +filldraw stroke z5e{p}..{p}z4e; % diagonal +math_fit(0,1/3x_height#*slant+.5hair#+.5u#); +penlabels(1,2,3,4,5,6,7,8); endchar; diff --git a/language/turkish/mf/tklig.mf b/language/turkish/mf/tklig.mf new file mode 100644 index 0000000000..6aa3d398fa --- /dev/null +++ b/language/turkish/mf/tklig.mf @@ -0,0 +1,36 @@ +HAT_A=oct"044"; CHIM=oct"013"; DAD=oct"000"; DHAL=oct"014"; +CUP_G=oct"015"; GHAYN=oct"001"; QAF=oct"004"; DOT_O=oct"005"; +HAT_O=oct"046"; TTA=oct"007"; DOT_U=oct"010"; +hat_a=oct"074"; chim=oct"033"; cup_g=oct"035"; ghayn=oct"021"; +hha=oct"022"; kha=oct"036"; dot_i=oct"023"; hat_i=oct"075"; +qaf=oct"024"; gnaf=oct"037"; dot_o=oct"025"; hat_o=oct"076"; +tta=oct"027" + +ligtable "A": "="=:HAT_A, +ligtable "C": ":"=:CHIM, +ligtable "D": "="=:DHAL, "!"=:DAD, +ligtable "G": ":"=:GHAYN, "="=:CUP_G, +ligtable "H": "="=:oct"016", "!"=:oct"002", +ligtable "I": ":"=:oct"003", "="=:oct"045", +ligtable "K": "!"=:QAF, +ligtable "N": "="=:oct"017", +ligtable "O": ":"=:DOT_O, "="=:HAT_O, +ligtable "S": ":"=:oct"052", "="=:oct"0136", "!"=:oct"006", +ligtable "T": "!"=:TTA, +ligtable "U": ":"=:DOT_U, +ligtable "Z": ":"=:oct"011", "="=:oct"0137, "!"=:oct"012, + +ligtable "a": "="=:hat_a, +ligtable "c": ":"=:chim, +ligtable "d": "="=:oct"034", "!"=:oct"020", +ligtable "g": ":"=:ghayn, "="=:cup_g, +ligtable "h": "="=:kha, "!"=:hha, +ligtable "i": ":"=:dot_i, "="=:hat_i, +ligtable "k": "!"=:qaf, +ligtable "n": "="=:oct"037", +ligtable "o": ":"=:dot_o, "="=:hat_o, +ligtable "s": ":"=:oct"053", "="=:oct"0176", "!"=:oct"026", +ligtable "t": "!"=:tta, +ligtable "u": ":"=:oct"030", +ligtable "z": ":"=:oct"031", "="=:oct"0177", "!"=:oct"032", + diff --git a/language/turkish/mf/tkpnct.mf b/language/turkish/mf/tkpnct.mf new file mode 100644 index 0000000000..f692acce62 --- /dev/null +++ b/language/turkish/mf/tkpnct.mf @@ -0,0 +1,331 @@ +% This file contains a reduced set of punctuation marks common to +% roman and italic styles for use with Turkish diacritical fonts. + +% Codes \0041, \0047--\0051, \0054\ % +%% \0056, \0057, \0072, \0073, \0077,\par +% \0133, \0135, and \0140 are generated. +% Codes \0045, \0052, \0053, and \0075 are generated |iff not use_pxl| +% Codes \0043 and \0100 are preempted by ayn and hamza. They must be +% in the |lccode| range. + +% Adapted from punct.mf by P. A. MacKay, January, 1987. + +cmchar "Exclamation point"; +beginchar("!",5u#+width_adj#,asc_height#,0); +italcorr asc_height#*slant-2u#-.5width_adj#+.5dot_size#; +adjust_fit(0,0); +pickup tiny.nib; pos3(dot_size,0); pos4(dot_size,90); +lft x3l=hround(.5w-.5dot_size); bot y4l=0; z3=z4; dot(3,4); % dot +numeric bot_width; +bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi; +pickup fine.nib; pos1(dot_size,0); pos2(bot_width,0); +x1=x2=x3; bot y2=.25[top y4r,x_height]+1; +if square_dots: top y1=h; + filldraw stroke z1e--z2e; % stem +else: top z0=(x1,h+o); y1+.5dot_size=h+o; + filldraw z1r...z0...z1l---z2l--z2r---cycle; fi % stem and bulb +penlabels(0,1,2,3,4); endchar; + +iff known spanish_shriek: cmchar "Spanish open exclamation point"; +beginchar(spanish_shriek,5u#+width_adj#,asc_height#-desc_depth#,desc_depth#); +italcorr h#*slant-2u#-.5width_adj#+.5dot_size#; +adjust_fit(0,0); +pickup tiny.nib; pos3(dot_size,0); pos4(dot_size,90); +lft x3l=hround(.5w-.5dot_size); top y4r=h; z3=z4; dot(3,4); % dot +numeric top_width; +top_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi; +pickup fine.nib; pos1(dot_size,0); pos2(top_width,0); +x1=x2=x3; top y2=.25[bot y4l,h-x_height]-1; +if square_dots: bot y1=-d; + filldraw stroke z1e--z2e; % stem +else: bot z0=(x1,-d-o); y1-.5dot_size=-d-o; + filldraw z1l...z0...z1r---z2r--z2l---cycle; fi % stem and bulb +penlabels(0,1,2,3,4); endchar; + +iff not use_pxl: cmchar "Hash mark (number sign)"; % normal place preempted +if monospace: compute_spread(.6x_height#,.7x_height#); % by `ayn. +else: compute_spread(.45x_height#,.55x_height#); fi +beginchar(oct"243",15u#,asc_height#,asc_depth#); % Not in normal place +italcorr (math_axis#+.5(spread#+rule_thickness#))*slant-.5u#; +adjust_fit(0,0); +pickup rule.nib; lft x1=hround u-eps; x3=x1; x2=x4=w-x1; +y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; +draw z1--z2; % upper bar +draw z3--z4; % lower bar +lft x6=hround 3u; rt x7=hround(w-3u); x5-x6=x7-x8; +x8=good.x if monospace: .6 else: .5 fi\\w; +top y5=top y7=h+eps; bot y6=bot y8=-d-eps; +y15=y1; z15=whatever[z5,z6]; y36=y3; z36=whatever[z5,z6]; +y27=y2; z27=whatever[z7,z8]; y48=y4; z48=whatever[z7,z8]; +draw z5--if x5>x6+1:(good.x(x15+.5),y1)--(good.x(x15-.5),y1) + --(good.x(x36+.5),y3)--(good.x(x36-.5),y3)--fi\\z6; % left diagonal +draw z7--if x7>x8+1:(good.x(x27+.5),y2)--(good.x(x27-.5),y2) + --(good.x(x48+.5),y4)--(good.x(x48-.5),y4)--fi\\z8; % right diagonal +labels(1,2,3,4,5,6,7,8,15,27,36,48); endchar; + +iff not use_pxl: cmchar "Per cent sign"; +beginchar("%",9u#+max(6u#,2fudge*(hair#+stem#)), + body_height#,body_height#-asc_height#); +italcorr if hefty: .4asc_height#*slant-.5u# else: h#*slant-u# fi; +adjust_fit(0,0); pickup fine.nib; +numeric left_curve,right_curve; +left_curve=hround 5/6[fudged.hair,fudged.stem]; +right_curve=max(fine.breadth,hround(fudged.hair if hefty:-2stem_corr fi)); +pos1(vair,90); pos2(left_curve,180); pos3(vair,270); pos4(right_curve,360); +top y1r=h; lft x2r=hround u; rt x4r=hround(.5w-1.5u); +bot y3r=floor(if monospace: .7 else: .5 fi\\ asc_height); +x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3]; +filldraw stroke pulled_super_arc.e(1,2)(superpull) + & pulled_super_arc.e(2,3)(superpull); % left half of upper bowl +filldraw stroke super_arc.e(3,4) & super_arc.e(4,1); % right half of upper bowl +pos5(vair,90); pos6(left_curve,180); pos7(vair,270); pos8(right_curve,360); +bot y7r=-d; rt x8r=hround(w-u); lft x6r=hround(.5w+1.5u); +top y5r=vround(if monospace: .3 else: .5 fi\\ asc_height); +x5=x7=.5[x6,x8]; y6=y8=.5[y5,y7]; +filldraw stroke pulled_super_arc.e(5,6)(superpull) + & pulled_super_arc.e(6,7)(superpull); % left half of lower bowl +filldraw stroke super_arc.e(7,8) & super_arc.e(8,5); % right half of lower bowl +pickup rule.nib; top y9=h; bot y10=-d; +if hefty: x9=good.x(x5-eps); x10=good.x(x1+eps); + draw z9--z10; % diagonal +else: rt x9=hround(w-2.5u); lft x10=hround 2.5u; draw z9--z10; % diagonal + pickup fine.nib; pos9(rule_thickness,angle(z9-z10)+90); + pos11(vair,angle(z1r-z4r)-90); pos12(vair,angle(z9-z10)+90); + path p; p=super_arc.r(1,4); z11r=point 2/3 of p; z12r=z9r; + filldraw stroke z11e{direction 2/3 of p}...{z9-z10}z12e; fi % link +penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; + +cmchar "Apostrophe"; +beginchar("'",5u#,asc_height#,0); +italcorr asc_height#*slant+.5dot_size#-2u#; +adjust_fit(0,0); +x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h; +if monospace: comma(1,a,dot_size,.28u,vround 1.5comma_depth); % large comma +else: comma(1,a,dot_size,.25u,comma_depth); fi % comma with increased jut +penlabels(1); endchar; + +cmchar "Left parenthesis"; +beginchar("(",7u# if monospace: -u# fi,body_height#,paren_depth#); +italcorr body_height#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0); +rt x1r=rt x3r=hround(w-u); lft x2l=hround(x1-4u if monospace: +4/3u fi); +top y1=h; y2=.5[y1,y3]=math_axis; +filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e + ...{3(x3e-x2e),y3-y2}z3e; % arc +penlabels(1,2,3); endchar; + +cmchar "Right parenthesis"; +beginchar(")",7u# if monospace: -u# fi,body_height#,paren_depth#); +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0); +lft x1l=lft x3l=hround u; rt x2r=hround(x1+4u if monospace: -4/3u fi); +top y1=h; y2=.5[y1,y3]=math_axis; +filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e + ...{3(x3e-x2e),y3-y2}z3e; % arc +penlabels(1,2,3); endchar; + +iff not use_pxl: cmchar "Asterisk"; +beginchar("*",9u#, + if low_asterisk:math_axis#+.5x_height# else: body_height# fi,0); +italcorr h#*slant-.75u#; +adjust_fit(0,0); +numeric ast_flare; ast_flare=hround .7[thin_join,stem]; +x0=.5w; y0=h-.5x_height; +for d=-150 step 60 until 150: z[d]=z0+.5dir d xscaled 7.5u yscaled x_height; + numeric theta; theta=angle(z[d]-z0); + fill z0+.5(0,-thin_join)rotated theta + ---z[d]+.5(-ast_flare,-ast_flare)rotated theta + ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta + ---z0+.5(0,thin_join)rotated theta--cycle; endfor % diagonal at angle |d| +labels(0,[-150],[-90],[-30],30,90,150); endchar; + +iff not use_pxl: cmchar "Plus sign"; +beginarithchar("+"); pickup rule.nib; +x1=x2=good.x .5w; top y1=h+eps; .5[y1,y2]=math_axis; +lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis; +draw z1--z2; % stem +draw z3--z4; % crossbar +labels(1,2,3,4); endchar; + +cmchar "Comma"; +numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#; +define_whole_blacker_pixels(dot_diam); +beginchar(",",5u#,dot_diam#,comma_depth#); +adjust_fit(0,0); +x1-.5dot_diam=hround(.5w-.5dot_diam); y1-.5dot_diam=0; +comma(1,a,dot_diam,.2u,comma_depth); % dot and tail +penlabels(1); endchar; + +cmchar "Period"; +numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#; +define_whole_blacker_pixels(dot_diam); +beginchar(".",5u#,dot_diam#,0); +adjust_fit(0,0); pickup fine.nib; +pos1(dot_diam,0); pos2(dot_diam,90); +lft x1l=hround(.5w-.5dot_diam); bot y2l=0; z1=z2; dot(1,2); % dot +penlabels(1,2); endchar; + +cmchar "Virgule (slash)"; +beginchar("/",9u#,body_height#,paren_depth#); +italcorr body_height#*slant-.5u#; +adjust_fit(0,0); pickup rule.nib; +rt x1=hround(w-u)+eps; top y1=h+eps; +lft x2=hround u-eps; bot y2=-d-eps; +draw z1--z2; % diagonal +penlabels(1,2); endchar; + +cmchar "Colon"; +numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#; +define_whole_blacker_pixels(dot_diam); +beginchar(":",5u#,x_height#,0); +italcorr x_height#*slant+.5dot_diam#-2u#; +adjust_fit(0,0); pickup fine.nib; +pos1(dot_diam,0); pos2(dot_diam,90); +lft x1l=hround(.5w-.5dot_diam); top y2r=h; z1=z2; dot(1,2); % upper dot +pos3(dot_diam,0); pos4(dot_diam,90); +x3=x1; bot y4l=0; z3=z4; dot(3,4); % lower dot +penlabels(1,2,3,4); endchar; + +cmchar "Semicolon"; +numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#; +define_whole_blacker_pixels(dot_diam); +beginchar(";",5u#,x_height#,comma_depth#); +italcorr x_height#*slant+.5dot_diam#-2u#; +adjust_fit(0,0); pickup fine.nib; +pos1(dot_diam,0); pos2(dot_diam,90); +lft x1l=hround(.5w-.5dot_diam); top y2r=h; z1=z2; dot(1,2); % upper dot +x3-.5dot_diam=hround(.5w-.5dot_diam); y3-.5dot_diam=0; +comma(3,a,dot_diam,.05u,comma_depth); % lower dot and tail +penlabels(1,2,3); endchar; + +iff not use_pxl: cmchar "Equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar("=",14u#,v_center(spread#+rule_thickness#)); +italcorr h#*slant-.5u#; +adjust_fit(0,0); pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; +y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; +draw z1--z2; % upper bar +draw z3--z4; % lower bar +labels(1,2,3,4); endchar; + +iff known romquery: cmchar "Question mark"; +beginchar("?",8.5u#,asc_height#,0); +italcorr .8asc_height#*slant; +adjust_fit(0,0); +pickup tiny.nib; pos7(dot_size,0); pos8(dot_size,90); +lft x7l=hround(.5w-.25u-.5dot_size); bot y8l=0; z7=z8; dot(7,8); % dot +numeric bot_width; +bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi; +pickup fine.nib; pos2(vair,90); pos3(curve,0); +pos4(vair,-90); pos5(bot_width,0); pos6(bot_width,0); +x2=x4=x5=x6=x7; rt x3r=hround(w-u); bot y6=1+.25[top y8r,x_height]; +top y2r=h+oo; y3=.75[y6,y2]; y4=.5[y6,y2]; y5=.1[y6,y2]; +{{interim superness:=more_super; +filldraw stroke pulled_super_arc.e(2,3)(superpull) + & subpath (0,1) of super_arc.e(3,4) .. z5e---z6e\\}}; % arc and stem +if serifs: pos1(hair,180); pos0(flare,180); + lft x1r=hround u; y1=y3; bulb(2,1,0); % bulb +else: pos1(Vround 5/7[vair,flare],110); + lft x1r=hround u; top y1r=vround .9[y6,top y2r]; + filldraw stroke term.e(2,1,left,1,4); fi % terminal +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +iff known italquery: cmchar "Italic question mark"; +beginchar("?",9u#,asc_height#,0); +italcorr asc_height#*slant-u#; +adjust_fit(0,0); pickup tiny.nib; pos10(dot_size,0); pos11(dot_size,90); +lft x10l=hround(.5w-.5dot_size); bot y11l=0; z10=z11; dot(10,11); % dot +pickup fine.nib; pos1(flare,180); pos2(hair,180); pos3(vair,90); +lft x1r=hround u; x3=.5w; +y1-.5flare=x_height; top y3r=h+o; bulb(3,2,1); % bulb +pos8(vair,-90); x8=.5w; bot y8r=.25[top y11r,x_height]+1; +numeric theta; theta=90+angle(10u,y3-y8); slope:=(y3-y8)/10u; +pos3'(vair,-90); z3'=z3; pos0(vstem,theta); x0=x3; y0=1/3[y8,y3]; +rt x4l=hround(w-1.5u); lft x7r=hround 1/3w; +x4l-x4r=x7l-x7r=hround .5[vair,vstem]-fine; +ellipse_set(3'l,4l,5l,0l); ellipse_set(3'r,4r,5r,0r); y4=y4r; +ellipse_set(8l,7l,6l,0l); ellipse_set(8r,7r,6r,0r); y7=y7r; +pos9(hair,0); rt x9r=hround(2/3w+.5hair); y9=good.y .5[y8,y0]; +filldraw stroke super_arc.e(3',4) & z4e{down} + ..z5e---z6e..z7e{down} & super_arc.e(7,8)...{up}z9e; % main stroke +penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar; + +iff not use_pxl: cmchar "At sign"; % normal position preempted by hamza +beginchar(oct"300",14u#,asc_height#,0); % not in normal position +italcorr .7asc_height#*slant-.5u#; +adjust_fit(0,if hefty or monospace:-2u# else: 0 fi); +pickup fine.nib; pos0(fudged.hair,0); pos1(vair,90); +pos2(fudged.stem,180); pos3(vair,270); +pos4(fudged.stem,-180); pos5(fudged.stem,-180); +pos6(vair,-90); pos7(fudged.hair,0); +pos8(vair,90); pos9(fudged.hair,180); +pos10(vair,270); pos11(.5[vair,flare],360); +x1=x3=.5[x0,x2]; y0=y2=.5[y1,y3]; +x8=x10=.5w; y7=y9=.5[y8,y10]; +lft x9r=hround u; x7=w-x9; top y8r=h+oo; bot y10r=-oo; +top y1r=vround(.8[y10,y8]+.5vair); bot y3r=vround(.2[y10,y8]-.5vair); +x6l=1/3[x5l,x7l]; y6=y3; y11=good.y(.1[y10,y8]-.5); +x0=x4=x5; y4=.8[y3,y1]; y5=2/3[y7,y6]; +if hefty or monospace: lft x2r=hround(5u-.5fudged.stem); + rt x0r=hround(w-3u); x11r=x0r; +else: lft x2r=hround 3.4u; x0=w-x2; x11r=x7r; fi +filldraw stroke super_arc.e(1,2) & super_arc.e(2,3); % left inner bowl +filldraw stroke super_arc.e(3,0) & super_arc.e(0,1); % right inner bowl +filldraw stroke super_arc.e(8,9) & super_arc.e(9,10) + & term.e(10,11,right,1,4); % left outer bowl and terminal +if hefty or monospace: {{interim superness:=hein_super; + filldraw stroke super_arc.e(0,8)}}; % link +else: (x,y6r)=whatever[z6l,z7l]; x6r:=x; + filldraw stroke z4e---z5e...z6e{right}...{up}z7e + & super_arc.e(7,8); fi % stem and link +penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar; + +cmchar "Left bracket"; +numeric wd#; wd#=max(5u#,4.5u#+.5if hefty:stem# else:rule_thickness# fi); +beginchar("[",wd#,body_height#,paren_depth#); +italcorr body_height#*slant; +adjust_fit(0,0); +numeric top_thickness,side_thickness; +if hefty: top_thickness=vair; + side_thickness=max(crisp.breadth,stem-2stem_corr); +else: top_thickness=side_thickness=rule_thickness; fi; +pickup crisp.nib; pos1(side_thickness,0); pos2(side_thickness,0); +top y1=h; bot y2=-d; lft x1l=lft x2l=hround(2.5u-.5side_thickness)-1-eps; +filldraw stroke z1e--z2e; % stem +pos3(top_thickness,90); pos4(top_thickness,90); +pos5(top_thickness,90); pos6(top_thickness,90); +x3=x5=x1l; rt x4=rt x6=ceiling(w-.4u)+eps; y3r=y4r=y1; y5l=y6l=y2; +filldraw stroke z3e--z4e; % upper bar +filldraw stroke z5e--z6e; % lower bar +penlabels(1,2,3,4,5,6); endchar; + +cmchar "Right bracket"; +numeric wd#; wd#=max(5u#,4.5u#+.5if hefty:stem# else:rule_thickness# fi); +beginchar("]",wd#,body_height#,paren_depth#); +italcorr body_height#*slant-2u#+.5if hefty:stem# else:rule_thickness# fi; +adjust_fit(0,0); +numeric top_thickness,side_thickness; +if hefty: top_thickness=vair; + side_thickness=max(crisp.breadth,stem-2stem_corr); +else: top_thickness=side_thickness=rule_thickness; fi; +pickup crisp.nib; pos1(side_thickness,0); pos2(side_thickness,0); +top y1=h; bot y2=-d; rt x1r=rt x2r=hround(w-2.5u+.5side_thickness)+1+eps; +filldraw stroke z1e--z2e; % stem +pos3(top_thickness,90); pos4(top_thickness,90); +pos5(top_thickness,90); pos6(top_thickness,90); +x3=x5=x1r; lft x4=lft x6=floor .4u-eps; y3r=y4r=y1; y5l=y6l=y2; +filldraw stroke z3e--z4e; % upper bar +filldraw stroke z5e--z6e; % lower bar +penlabels(1,2,3,4,5,6); endchar; + +cmchar "Reverse apostrophe"; +beginchar("`",5u#,asc_height#,0); +italcorr asc_height#*slant+.5dot_size#-2u#; +adjust_fit(0,0); +x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h-comma_depth; +if monospace: ammoc(1,a,dot_size,.28u,vround 1.5comma_depth); % large ammoc +else: ammoc(1,a,dot_size,.25u,comma_depth); fi % normal ammoc +penlabels(1); endchar; diff --git a/language/turkish/mf/tkroml.mf b/language/turkish/mf/tkroml.mf new file mode 100644 index 0000000000..6ec8269b35 --- /dev/null +++ b/language/turkish/mf/tkroml.mf @@ -0,0 +1,818 @@ +% Computer Modern Roman lower case for Turkish: +% These letters were originally coded by D. E. Knuth in November, 1979, +% inspired by the Monotype faces used in {\sl The Art of Computer Programming}. +% Sans serif designs by Richard Southall were added in April, 1982. +% The programs were revised for the new \MF\ conventions in 1985. + +% Differs from romanl.mf in that the i is undotted. +% Adapted from romanl.mf by P. A. MacKay, January, 1987. + +% Character codes \0141 through \0172 are generated. + +cmchar "The letter a"; +beginchar("a",9u#,x_height#,0); +bh#:=min(bar_height#,1.14x_height#-bar_height#); define_pixels(bh); +italcorr 1/3[bh#,x_height#]*slant+.5stem#-serif_fit#-2u#; +adjust_fit(0,serif_fit# if serifs: if hair#+.5stem#>1.5u#:-.25u# fi\\fi); +pickup fine.nib; top y3r=h+vround 1.5oo; +if serifs: pos1(flare,180); pos2(hair,180); + pos3(vair,90); lft x1r=hround max(u,2.1u-.5flare); x3=.5w-.5u; + y1=min(bh+.5flare+2vair+2,.9[bh,h]-.5flare); + bulb(3,2,1); % bulb +else: pos1(5/7[vair,flare],95); x1l=good.x 1.5u; x1r:=good.x x1r; + pos3(1/8[vair,thin_join],90); + x3=.5w-.2u; top y1r=vround .82[bh,top y3r]; + filldraw stroke term.e(3,1,left,.9,4); fi % terminal +pos4(stem,0); rt x4r=hround(w-2.5u+.5stem); y4=1/3[bh,h]; +pos5(stem,0); x5=x4; y5=max(.55bh,2vair); +filldraw stroke super_arc.e(3,4)&z4e..z5e; % arc and stem +pos6(.3[thin_join,vair],90); x6=x4; bot y6=bh; +pos7(hround(curve-2stem_corr),180); +lft x7r=hround max(.5u,1.5u-.5curve); y7=1/3[top y8l,top y6r]; +pos8(vair,270); x8l=.5w-.75u; bot y8r=-oo; +pos9(thin_join,360); z9l=z5l; +(x,y8r)=whatever[z8l,z9l]; x8r:=max(x,x8-u); +{{interim superness:=more_super; + filldraw stroke z9e{down}...z8e{left}...{up}z7e&super_arc.e(7,6)}}; % bowl +if serifs: numeric shaved_stem; shaved_stem=hround(stem-3stem_corr); + if hair#+.5stem#>1.5u#: pickup tiny.nib; + pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; + pos10(shaved_stem,0); x10=x5'; y10=.2[.5tiny,bh]; + pos11(shaved_stem,0); rt x11r=hround(w-.25u); bot y11=0; + pos12(shaved_stem,0); x11=x12; top y12=slab+eps; + filldraw z5'l---z10l...z11l{right}--z11r + --z12r{left}...z10r+.75(z12-z11)---z5'r--cycle; % foot + else: pickup crisp.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; + pos10(shaved_stem,0); x10=x5'; y10=1/3bh; + pos11(.2[vair,stem],90); x11r=.5[x10r,x12r]; bot y11l=-vround .5oo; + pos12(hair,180); rt x12l=hround(w-.1u); y12=max(y10,y11+vair); + pos13(hair,180); x13=x12; top y13=max(vround .6bh,top y12); + (x',y11l)=whatever[z11r,z12r]; x11l:=max(x',x10); + filldraw stroke z5'e---z10e...z11e{right}...z12e---z13e; fi % hook +else: numeric shaved_stem; shaved_stem=hround(stem-stem_corr); + pickup tiny.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5; + pos10(shaved_stem,0); x10=x5'; bot y10=0; + filldraw stroke z5'e--z10e; fi % base of stem +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar; + +cmchar "The letter b"; +beginchar("b",10u#+serif_fit#,asc_height#,0); +italcorr .5x_height#*slant+min(.5curve#-u#,-.25u#); +adjust_fit(serif_fit#,0); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2; +lft x1l=hround(2.5u-.5stem'); top y1=h; +numeric edge; edge=rt x2r; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180); +pos4(vair,90); pos5(curve,0); pos6(vair,-90); penpos7(x3l-x3r,-180); +rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l),1/3[rt x2,edge]); +y3=1/8[bar_height,x_height]; +x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo; +rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=-oo; +x7=x3; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x4,x5r]); +(x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x6,x5r]); +filldraw stroke z3e{up}...pulled_arc.e(4,5)&pulled_arc.e(5,6)...{up}z7e; % bowl +y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l)); +y2=ypart(((edge,h)--(edge,0))intersectionpoint(z6l{left}...{up}z7l)); +pickup tiny.nib; filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; pos8(hair,0); pos7'(stem,0); +z7'=z2; x8l=x7'l; bot y8=0; +filldraw stroke z7'e--z8e; % point +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); fi % upper serif +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +cmchar "The letter c"; +beginchar("c",8u#,x_height#,0); +italcorr x_height#*slant-.2u#; +adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); +pickup fine.nib; pos2(vair',90); pos4(vair',270); +x2=x4=.5(w+u); top y2r=vround(h+1.5oo); bot y4r=-oo; +pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5h; +if serifs: pos1(hair,0); pos0(flare,0); + y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare); + rt x1r=hround(w-.7u); bulb(2,1,0); % bulb + pos5(hair,0); rt x5r=hround(w-.5u); + y5=max(good.y(.5bar_height-.9),y4l+vair'); + (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u); + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) + ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal +else: pos1(4/7[vair',flare],80); + rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r]; + filldraw stroke term.e(2,1,right,.8,4); % upper terminal + pos5(.6[vair',flare],275); rt x5r=hround(w-.5u); + y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; + forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e; + if angle direction 1 of p.e>75: + p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal +penlabels(0,1,2,3,4,5); endchar; + +cmchar "The letter d"; +beginchar("d",10u#+serif_fit#,asc_height#,0); +italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(0,serif_fit#); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; +rt x1r=hround(w-2.5u+.5stem'); top y1=h; +numeric edge; edge=lft x2l; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); +pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); +lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),1/3[lft x2,edge]); +y3=1/8[bar_height,x_height]; +x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; +lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=-oo; +x7=x3; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); +filldraw stroke z3e{up}...pulled_arc.e(4,5) + & pulled_arc.e(5,6)...{up}z7e; % bowl +y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{left}z4l)); +pickup tiny.nib; bot y2=if serifs:-min(oo,serif_drop) else: 0 fi; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif + sloped_serif.r(2,0,b,1/3,jut,min(oo,serif_drop)); fi % lower serif +penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "The letter e"; +beginchar("e",7.25u#+max(.75u#,.5curve#),x_height#,0); +italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0); +adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi); +numeric left_curve,right_curve; +left_curve=right_curve+6stem_corr=curve if not serifs: -3stem_corr fi; +if right_curve<tiny.breadth: right_curve:=tiny.breadth; fi +if left_curve<tiny.breadth: left_curve:=tiny.breadth; fi +pickup tiny.nib; pos1(right_curve,0); +pos2(vair,90); pos3(left_curve,180); +y1=good.y bar_height; top y2r=h+vround 1.5oo; y0l=bot y1; +rt x1r=hround min(w-.5u,w-u+.5right_curve); +lft x3r=hround max(.5u,1.25u-.5left_curve); x2=.5w+.25u; +{{interim superness:=more_super; + filldraw stroke super_arc.e(1,2)}}; % right bowl +y3=.5[y2,y4]; bot y4r=-oo; x4=x2+.25u; +if serifs: pos4(vair',270); pos5(hair,360); + y5=max(good.y(.5bar_height-.9),y4l+vair); x5r=x1r; + (x,y4l)=whatever[z4r,z5]; x4l:=min(x,x4l+.5u); + filldraw stroke pulled_arc.e(2,3) & pulled_arc.e(3,4) + ...{x5-x4,5(y5-y4)}z5e; % left bowl, arc, and terminal +else: pos4(vair,270); + filldraw stroke super_arc.e(2,3) & super_arc.e(3,4); % left bowl and arc + pickup fine.nib; pos4'(vair,270); z4=z4'; + pos5(.5[vair,flare],275); rt x5r=hround(w-.6u); + y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; + filldraw stroke term.e(4',5,right,1,4); fi % terminal +path testpath; testpath=super_arc.r(2,3) & super_arc.r(3,4); +y1'r=y0r=y0l+.6[thin_join,vair]; y1'l=y0l; x1'l=x1'r=x1; +forsuffixes $=l,r: + x0$=xpart(((0,y0$)--(x1,y0$)) intersectionpoint testpath); endfor +fill stroke z0e--z1'e; % crossbar +penlabels(0,1,2,3,4,5); endchar; + +cmchar "The letter f"; +beginchar("f",5.5u#,asc_height#,0); +italcorr asc_height#*slant+if serifs:flare#-.25u# else: 1.25u# fi; +adjust_fit(stem_shift#,if monospace: .5u# else:-stem_shift# fi); +pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); +pickup fine.nib; numeric bulb_diam; +if serifs: bulb_diam=hround .8[stem,flare]; + pos2(bulb_diam,0); y2+.5bulb_diam=.9[x_height,h+oo]; + if monospace: rt x2r=hround(w-.5u)+1 else: lft x2l=hround(w-.75u+.5) fi; +else: pos2(5/7[vair,flare],90); top y2r=h; + rt x2=hround(if monospace:w-.5u else:w+.75u fi); fi +f_stroke(1,2,a,b,c,jut,if not monospace:1.25fi\\ jut); % stem, terminal, serif +pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1; +pos3(bar,90); pos4(bar,90); +rt x4=hround(w-if monospace:.75u+1 else:1/3u fi); +filldraw stroke z3e--z4e; % bar +penlabels(1,2,3,4); endchar; + +iff not variant_g: cmchar "The letter g"; +beginchar("g",9u#,x_height#,desc_depth#); +italcorr x_height#*slant+.25u#; +adjust_fit(0,0); +numeric light_vair,light_curve,loop_top,loop_side; +light_vair=Vround(.5[thin_join,vair]+vair_corr); +light_curve=max(fine.breadth,hround(curve-3stem_corr)); +loop_top=Vround .77[vair,fudged.stem]; +loop_side=hround .64[vair,fudged.stem]; +pickup fine.nib; pos1(light_vair,90); +pos2(light_curve,180); pos3(light_vair,270); +pos4(light_curve,360); pos11(loop_top,90); +y11r=good.y(y11r+.15bar_height-y11); x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3]; +lft x2r=hround(1.75u-.5light_curve); rt x4r=hround(w-2.75u+.5light_curve); +top y1r=h+oo; y3r=good.y(y3r+.27[top y11r,bot y1l]-y3); +filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3); % left half of bowl +filldraw stroke pulled_arc.e(3,4) & pulled_arc.e(4,1); % right half of bowl +x0=superness[x1r,x4r]; y0=superness[y4r,y1r]; % NE point on the super bowl +x8'=superness[x3r,x2r]; y8'=superness[y2r,y3r]; % SW point on the super bowl +x8''=superness[x3,x2]; y8''=superness[y2,y3]; +pos0(thin_join,angle(z0-z8')+90); +pos8(thin_join,angle(z0-z8')-90); z8=.618[z8',z8'']; +if serifs: pos5(vair,90); + pos6(hair,0); pos7(.5[hair,flare],0); x5=.75[x0,x6]; top y5r=h+o; + rt x6r=hround(w-.25u); y6+(.5[hair,flare])/2=.95[bar_height,h]+oo; + filldraw stroke z0e..{right}z5e; bulb(5,6,7); % ear +else: pos5(vair',100); top y5r=h+oo; + rt x5l=hround(w-.25u); y5l:=good.y y5l; + filldraw z0l{z5-z0}..z5l--z5r{left}..{curl 1}z0r--cycle; fi % ear +pos10(loop_top,90); x10=x8+.75u; y10=y11; +pos12(loop_side,0); pos13(light_vair,-90); +pos14(loop_side,-180); pos10'(.5[thin_join,vair],-270); +rt x12r=hround max(w-1.25u+.5loop_side,w-.5u); y12=y14=.5[y11,y13]; +x11=x13=max(.5w,x10+eps); bot y13r=-d-oo-1; x14=w-x12; z10'l=z10l; +filldraw stroke z8e{z8-z0}..z10e---z11e; % link +filldraw stroke {{interim superness:=hein_super; super_arc.e(11,12)}} + & super_arc.e(12,13) & super_arc.e(13,14) & super_arc.e(14,10'); % loop +penlabels(0,1,2,3,4,5,6,7,8,10,11,12,13,14); labels(8',8''); endchar; + +iff variant_g: cmchar "Variant letter g"; +beginchar("g",10u#+serif_fit#,x_height#,desc_depth#); +italcorr x_height#*slant-serif_fit#+.5stem#-2u# if serifs:+.5u# fi; +adjust_fit(0,serif_fit# if serifs: -.5u# fi); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; +rt x1r=hround(w-2.5u+.5stem'); +numeric edge; edge=lft x2l; +path edge_path; edge_path=(edge,h)--(edge,0); +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); +pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); +lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height; +x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; +lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=vround 1/3vair; +lft x7l=edge; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); +filldraw stroke z3e{up}...{left}z4e&super_arc.e(4,5) + &super_arc.e(5,6)&z6e{right}...{up}z7e; % bowl +y1=ypart(edge_path intersectionpoint(z3l{up}...{left}z4l)); +y0=ypart(edge_path intersectionpoint(z7l{down}...{left}z6l)); +pickup tiny.nib; bot y2=if serifs: -.25d else: 0 fi; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; +pos8(hround(hair-stem_corr),0); pos7'(stem',0); +z7'=z1; x8r=x7'r; top y8=h+oo; +filldraw stroke z7'e--z8e; % point +if serifs: pickup tiny.nib; + pos9(vair,-90); x9=.5[x2,x10]; bot y9r=-d-o-1; + pos10(hair,-180); lft x10r=hround u; y10=-.75d+.5flare; + pos11(flare,-180); z11r=z10r; + bulb(9,10,11); filldraw stroke super_arc.e(2,9); % tail +else: pickup fine.nib; pos2'(stem,0); z2'=z2; + z2''r=z2'r; z2''=z2'; z2''l=(x2'l,0); + pos9(vair,-90); x9=4.5u; bot y9r=-d-o-1; + pos10(.5[vair,flare],-90); lft x10=hround 1.25u; + y10r=good.y -5/6d; y10l:=good.y y10l; + filldraw stroke z2'e..z2''e&super_arc.e(2'',9) + & term.e(9,10,left,.9,4); fi % tail +penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar; + +cmchar "The letter h"; +beginchar("h",10u#,asc_height#,0); +italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +pos1'(stem',0); pos2'(stem',0); pos3(stem,0); +lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1; +top y1=h; bot y2=0; y1=y1'; y2=y2'; +filldraw stroke z1'e--z2'e; % left stem +h_stroke(2,a,3,4); % arch and right stem +if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif + numeric inner_jut; pickup tiny.nib; + if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; + else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi + dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif + dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif +penlabels(1,2,3,4); endchar; + +cmchar "The letter i"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar("i",5u#,x_height#,0); +define_whole_blacker_pixels(dot_diam); +italcorr h#*slant-serif_fit# + .5dot_diam# -2u#; +adjust_fit(serif_fit#+stem_shift# if monospace:+.25u#fi,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem',0); pos2(stem',0); +if odd(w-stem'): change_width; fi +lft x1l=hround(.5w-.5stem'); x1=x2; +top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=0; +filldraw stroke z1e--z2e; % stem +if serifs: x3r=max(x1r,x1+.5(dot_diam-tiny)-.2jut) else: x3=x1-.5 fi; +if serifs: sloped_serif.l(1,2,a,1/3,.95jut,serif_drop); % upper serif + dish_serif(2,1,b,1/3,jut,c,1/3,.9jut); fi % lower serif +penlabels(1,2,3,4); endchar; + +cmchar "The letter j"; +numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#); +beginchar("j",5.5u#,min(asc_height#,10/7x_height#+.5dot_diam#),desc_depth#); +define_whole_blacker_pixels(dot_diam); +italcorr h#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+2stem_shift# if monospace:+\\.5u# fi, + serif_fit#-2stem_shift# if monospace:-.5u# fi); +pickup tiny.nib; pos1(stem',0); pos2(stem',0); +rt x1r=hround(.5w+.25u+.5stem'); x1=x2; +top y1=x_height if serifs: +min(oo,serif_drop) fi; bot y2=-1/3d; +filldraw stroke z1e--z2e; % stem +pos3(dot_diam,0); pos4(dot_diam,90); +x3r=x1r; top y4r=h+1; +if bot y4l-top y1<slab: y4l:=min(y4r-eps,y1+tiny+slab); fi +x3=x4; y3=.5[y4l,y4r]; dot(3,4); % dot +if serifs: sloped_serif.l(1,2,a,1/3,1.1jut,serif_drop); % upper serif + pickup tiny.nib; pos5(vair,-90); pos6(hair,-180); pos7(flare,-180); + x5=.5[x2,x6r]; bot y5r=-d-oo; y6-.5flare=-.88d; + if monospace: lft x6r=0 else: z6r=z7r; rt x7l=floor .75u fi; + (x,y5r)=whatever[z5l,z2l]; x5r:=max(x,.5[x6r,x5]); + filldraw stroke z2e{down}...z5e{left}; bulb(5,6,7); % arc and bulb +else: pickup fine.nib; pos2'(stem',0); z2'=z2; + pos6(.2[vair,stem'],-90); pos7(vair,-90); + lft x7r=hround -.75u; bot y7r=vround 5/6(-d-oo); + (x,y7l)=whatever[z7r,z3]; x7l:=x; + z5r=z2'r; (x2'l,y5l)=whatever[z7l,z5r]; x5l=x2'l; y5=y5r; + x6r=.5[x7r,x5r]; x6l:=.5[x7l,x5l]; bot y6r=-d-oo; + filldraw stroke z2'e..{down}z5e & super_arc.e(5,6) + & z6e{left}..z7e; fi % arc and terminal +penlabels(1,2,3,4,5,6,7); endchar; + +cmchar "The letter k"; +beginchar("k",9.5u#,asc_height#,0); +italcorr x_height#*slant-.2u#; +adjust_fit(serif_fit#,serif_fit#); pickup tiny.nib; +numeric right_jut,stem[],alpha[]; +stem1=max(tiny.breadth,hround(fudged.stem-stem_corr)); +stem2=max(tiny.breadth,hround(fudged.stem-2stem_corr)); +stem3=max(tiny.breadth,hround(fudged.hair if hefty:-\\4stem_corr fi)); +stem4=max(tiny.breadth,hround(fudged.stem-3stem_corr)); +if serifs: right_jut=.6jut; else: right_jut=.4tiny; fi +pos1(stem1,0); pos2(stem2,0); top y1=h; bot y2=0; +lft x1l=lft x2l=hround(2.5u-.5stem1); +top y3=x_height; rt x3r=hround(r-letter_fit-.7u-right_jut)+eps; +bot y6=0; rt x6r=hround(r-letter_fit-.3u-right_jut)+eps; +x4=x11=x1; y4=.7bar_height; y11=y3; +alpha1=diag_ratio(1,.5(stem3-tiny),y3-y4,x3r-x4); +alpha2=diag_ratio(1,.5(stem4-tiny),y11-y6,x6r-x1); +penpos3(alpha1*(stem3-tiny),0); penpos4(whatever,-90); +z5=.5[z5l,z5r]; penpos6(alpha2*(stem4-tiny),0); +forsuffixes $=l,r: y3'$=x_height; y6'$=0; z4$=z3'$+whatever*(z3-z4); + z5$=z6'$+whatever*(z11-z6)=whatever[z3,z4]; endfor +z3'r=z3r+penoffset z3-z4 of currentpen+whatever*(z3-z4); +% we have also |z3'l=z3l+penoffset z4-z3 of currentpen+whatever*(z3-z4)|;\] +z6'r=z6r+penoffset z11-z6 of currentpen+whatever*(z11-z6); +z6'l=z6l+penoffset z6-z11 of currentpen+whatever*(z11-z6); +fill z4r--diag_end(4r,3'r,1,.5,3'l,4l)--z4l--cycle; % upper diagonal +fill z5l--diag_end(5l,6'l,.5,1,6'r,5r)--z5r--cycle; % lower diagonal +pos0(stem1,0); pos0'(stem2,0); y0=y0'; x0=x1; x0'=x2; +rt z0r=whatever[z3,z4]; filldraw stroke z1e..z0e--z0'e..z2e; % stem +if serifs: numeric inner_jut; + if rt x2r+jut+.5u+1<=lft x6l-jut: inner_jut=jut; + else: rt x2r+inner_jut+.5u+1=lft x6l-inner_jut; fi + sloped_serif.l(1,0,a,1/3,jut,serif_drop); % upper stem serif + dish_serif(2,0',b,1/3,jut,c,1/3,inner_jut); % lower stem serif + dish_serif(3,4,d,2/3,1.4jut,e,1/2,right_jut)(dark); % upper diagonal serif + dish_serif(6,5,f,1/2,inner_jut,g,1/3,right_jut)(dark);fi % lower diagonal serif +penlabels(0,1,2,3,4,5,6,11); endchar; + +cmchar "The letter l"; +beginchar("l",5u#,asc_height#,0); l_width#:=5u#+2serif_fit#; +italcorr asc_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem',0); pos2(stem',0); +if odd(w-stem'): change_width; fi +lft x1l=hround(.5w-.5stem'); x1=x2; top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +if serifs: sloped_serif.l(1,2,a,1/3,jut,serif_drop); % upper serif + dish_serif(2,1,b,1/3,jut,c,1/3,jut); fi % lower serif +penlabels(1,2); endchar; + +cmchar "The letter m"; +beginchar("m",15u#,x_height#,0); +italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +numeric shaved_stem; shaved_stem=hround(mfudged.stem-2stem_corr); +pickup tiny.nib; pos1(mfudged.stem,0); pos2(mfudged.stem,0); +pos1'(shaved_stem,0); pos2'(shaved_stem,0); +pos3(mfudged.stem,0); pos5(mfudged.stem,0); +lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; +lft x3l=hround(.5w-.5stem); x5-x3=x3-x1; +if not monospace: r:=hround(x5+x1)-l; fi % change width for better fit +top y1=h+min(oo,serif_drop); bot y2=0; y1=y1'; y2=y2'; +filldraw stroke z1'e--z2'e; % left stem +h_stroke(2,a,3,4); % left arch and middle stem +h_stroke(4,b,5,6); % right arch and right stem +if serifs: sloped_serif.l(1',2',c,1/3,jut,serif_drop); % upper left serif + numeric inner_jut; pickup tiny.nib; + if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; + else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi + dish_serif(2,1,d,1/3,jut,e,1/3,jut); % lower left serif + dish_serif(4,3,f,1/3,inner_jut,g,1/3,jut); % lower middle serif + dish_serif(6,5,h,1/3,inner_jut,i,1/3,jut); fi % lower right serif +penlabels(1,2,3,4,5,6); endchar; + +cmchar "The letter n"; +beginchar("n",10u#,x_height#,0); +italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +numeric shaved_stem; shaved_stem=hround(stem-2stem_corr); +pos1'(shaved_stem,0); pos2'(shaved_stem,0); pos3(stem,0); +lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1; +top y1=h+min(oo,serif_drop); bot y2=0; y1=y1'; y2=y2'; +filldraw stroke z1'e--z2'e; % left stem +h_stroke(2,a,3,4); % arch and right stem +if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif + numeric inner_jut; pickup tiny.nib; + if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; + else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi + dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif + dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif +penlabels(1,2,3,4); endchar; + +cmchar "The letter o"; +beginchar("o",9u#,x_height#,0); +italcorr .7x_height#*slant; +adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); +penpos1(vair,90); penpos3(vair',-90); +penpos2(curve,180); penpos4(curve,0); +x2r=hround max(.5u,1.25u-.5curve); +x4r=w-x2r; x1=x3=.5w; y1r=h+vround 1.5oo; y3r=-oo; +y2=y4=.5h-vair_corr; y2l:=y4l:=.52h; +penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl +penlabels(1,2,3,4); endchar; + +cmchar "The letter p"; +beginchar("p",10u#+serif_fit#,x_height#,desc_depth#); +italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#); +adjust_fit(serif_fit#,0); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2; +lft x1l=hround(2.5u-.5stem'); top y1=h if serifs: +min(oo,serif_drop) fi; +numeric edge; edge=rt x2r; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180); +pos4(vair',90); pos5(curve,0); pos6(vair,-90); penpos7(x3l-x3r,-180); +rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l), 1/3[rt x2,edge]); +y3=1/8[bar_height,x_height]; +x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo; +rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=-oo; +x7=x3; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x5r,x6]); +filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5) + &super_arc.e(5,6)&z6e{left}...{up}z7e; % bowl +y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l)); +pickup tiny.nib; bot y2=-d; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; pos8(hair,0); pos7'(stem,0); +z7'=z2; x8l=x7'l; bot y8=0; +filldraw stroke z7'e--z8e; % point +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif + dish_serif(2,0,b,1/3,jut,c,1/3,jut); fi % lower serif +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +cmchar "The letter q"; +beginchar("q",10u#+serif_fit#,x_height#,desc_depth#); +italcorr x_height#*slant-serif_fit#+.5stem#-2u# if serifs:+.5u# fi; +adjust_fit(0,serif_fit# if serifs: -.5u# fi); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2; +rt x1r=hround(w-2.5u+.5stem'); +numeric edge; edge=lft x2l; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0); +pos4(vair',90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360); +lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height; +x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo; +lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=-oo; y7=min(y3,y6+y4-y3+.6vair); +lft x7l=min(lft x7l-(rt x7r-tiny.rt x2r),1/3[lft x2,edge]); +(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]); +filldraw stroke z3e{up}...{left}z4e&super_arc.e(4,5) + &super_arc.e(5,6)&z6e{right}...{up}z7e; % bowl +y1=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{left}z4l)); +y0=ypart(((edge,h)--(edge,0))intersectionpoint(z6l{right}...{up}z7l)); +pickup tiny.nib; bot y2=-d; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; +pos8(hround(hair-stem_corr),0); pos7'(stem',0); +z7'=z1; x8r=x7'r; top y8=h+oo; +filldraw stroke z7'e--z8e; % point +if serifs: dish_serif(2,0,b,1/3,jut,c,1/3,jut); fi % lower serif +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +cmchar "The letter r"; +numeric r_flare#; r_flare#=.75[if serifs: stem# else: vair# fi,flare#]; +define_whole_blacker_pixels(r_flare); +beginchar("r",if serifs:max(7u#,5.5u#+r_flare#) else:6.5u# fi,x_height#,0); +italcorr x_height#*slant if not serifs: +.25u# fi; +adjust_fit(serif_fit#,0); +pickup fine.nib; top y4r=h+oo; +if serifs: pos4(vair,90); pos5(hair,0); + x4=w-max(1.75u,.25u+r_flare); + rt x5r=hround(w-.5u+.5); y5+.5r_flare=.9[bar_height,h]+oo; + pos6(r_flare,0); bulb(4,5,6); % bulb +else: pos4(r_flare,90); rt x4=hround(w-.25u); fi +pos3(thin_join,180); rt x3l=hround(2.5u-.5stem')+stem'; top y3=bar_height; +filldraw stroke z3e{up}...{right}z4e; % arc +pickup tiny.nib; pos0(stem',0); pos2(stem',0); +pos1(hround(stem-3stem_corr),0); top y1=h+min(oo,serif_drop); +pos0'(hround(stem-3stem_corr),0); y0=y0'=y3; x1l=x0l=x0'l=x2l; +lft x1l=hround(2.5u-.5stem'); bot y2=0; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif + dish_serif(2,0,b,1/3,jut,c,1/3,1.25jut); fi % lower serif +penlabels(1,2,3,4,5,6); endchar; + +cmchar "The letter s"; +beginchar("s",7.1u#,x_height#,0); +italcorr x_height#*slant-if serifs:.55u# else:.3u# fi; +adjust_fit(if monospace: .5u#,.4u# else: 0,if serifs:0 else:-.2u# fi fi); +numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle +numeric s_slab; s_slab=if serifs:vair else:Vround .1[vair,stem] fi; +numeric ess'; ess'=max(fine.breadth,ess); +pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-100); +pos0(ess',theta); pos7(s_slab,-90); x2l=x0=x7=.5w; +top y2l=h+vround 1.5oo; bot y7r=-oo; +y0-.5ess'=y7l+if serifs:.54 else: .52 fi\\(y2r-y7l-ess'); +lft x3l=hround .6u; rt x6r=hround(w-.6u); +x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +interim superness:=more_super; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +if serifs: pos1(hair,180); pos8(hair,180); + rt x1l=hround(w-1.05u); lft x8r=hround .6u; + bot y1=min(bot y2r,vround 1/5[top y5r,h]); + top y8=max(top y7l,vround 5/6 bot y4l); + filldraw stroke z1e{up}....{left}z2e; % upper arc + filldraw stroke z7e{left}....{x8-x7,5(y8-y7)}z8e; % lower arc + path upper_arc, lower_arc; + upper_arc=z1{up}....{left}z2; lower_arc=z7{left}....{x8-x7,5(y8-y7)}z8; + pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0); + x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; + x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; + numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); + filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb + t:=xpart(lower_arc intersectiontimes(z9r--z8')); + filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb +else: pos1(4/7[s_slab,flare],-100); pos8(flare,-100); + x1l=good.x(x1l+w-u-rt x1); lft x8r=hround .5u; + top y1l=vround(.93h+1.5oo); bot y8r=vround .1h-oo; + filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal + filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal +penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar; + +cmchar "The letter t"; +beginchar("t",6u#+max(u#,.5stem#), + min(asc_height#,if hefty:9/7 else:10/7 fi\\ x_height#),0); +italcorr x_height#*slant if serifs: -.9u# else: -.4u# fi; +adjust_fit(0,if serifs: 0 else: -.5u# fi); +numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi); +pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180); +lft x2r=lft x3r=hround(2.5u-.5shaved_stem); +y2=y8; y3=max(.5bar_height,2vair); +pickup crisp.nib; pos8(bar,90); +rt x8=hround(w-1.3u); top y8r=x_height; lft x7=hround 1/3u; y7l=y8l; +if hefty: pos7(bar,90); + filldraw stroke z7e--z8e; % crossbar + pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0); + rt x1r=fine.rt x2l; top y1=h; + penpos2'(x1r-x1l,0); x2'=x1; y2'=y2; + filldraw stroke z1e--z2'e; % upper terminal +else: pos7(vair,90); pos1(hair,0); + rt x1r=fine.rt x2l; top y1=h; + filldraw z1l{down}...{left}z7r--z7l--z8l + --z8r--(x1r,y8r)--z1r--cycle; fi % upper terminal and crossbar +pickup fine.nib; interim superness:=more_super; +pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u); +if serifs: pos5(hair,0); y5=y3; x4l=.5[x3l,x5l]; + (x,y4r)=whatever[z4l,z5l]; x4r:=max(x,.5[x3r,x4]); + filldraw stroke z2e..super_arc.e(3,4)...{up}z5e; % stem and hook + pickup crisp.nib; pos6(hair,0); pos5'(hair,0); + x6=x5=x5'; top y6=max(vround .75bar_height,top y5); y5=y5'; + filldraw stroke z5'e--z6e; % terminal +else: pos5(vair,-75); top y5l=vround .2[top y4l,bar_height]; + x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair; + filldraw stroke z2e..super_arc.e(3,4); % stem and hook + path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal + if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0): + filldraw stroke z4e{right}...{up}z5e; + else: filldraw p; fi fi; +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "The letter u"; +beginchar("u",10u#,x_height#,0); +italcorr x_height#*slant-serif_fit#+.5stem#-2u#; +adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#); +numeric light_vair; light_vair=vair if hefty: -vround 2vair_corr fi; +if light_vair<fine.breadth: light_vair:=fine.breadth; fi +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +pos3(stem,0); pos4(stem',0); +lft x1l=hround(2.5u-.5stem); x1=x2; x3=w-x1; x3r=x4r; +if serifs: top y1=h+min(oo,serif_drop); bot y4=-min(oo,serif_drop); +else: top y1=h; bot y4=0; fi +pos0(stem,0); pos0'(stem',0); x0=x3; x0'=x4; y0=y0'; +penpos2'(stem-fine,-180); z2'=z2; y3=y1; y2=.5bar_height; +penpos5(max(eps,light_vair-fine),-90); penpos6(thin_join-fine,0); +y6=y0=2/3bar_height; +filldraw stroke z1e--z2e; % left stem +filldraw stroke z3e..z0e--z0'e..z4e; % right stem +pickup fine.nib; bot y5r=-oo; x5l=.5w-.25u; lft x6l=tiny.lft x0l; +(x,y5r)=whatever[z5l,z6l]; x5r:=max(x,.5[x5,x2'r]); +filldraw stroke {{interim superness:=hein_super; + pulled_arc.e(2',5)}} & z5e{right}...{up}z6e; % arc +if serifs: sloped_serif.l(1,2,a,1/3,jut,serif_drop); % upper left serif + sloped_serif.l(3,0,b,1/3,jut,serif_drop); % upper right serif + sloped_serif.r(4,0',c,1/3,jut,min(oo,serif_drop)); fi % lower right serif +penlabels(1,2,3,4,5); labels(6); endchar; + +cmchar "The letter v"; +beginchar("v",if serifs: 9.5u# else:9u# fi,x_height#,0); +italcorr x_height#*slant+.25u#; +adjust_fit(serif_fit# if monospace:+\\.5u#,.5u#+ else:,fi\\ serif_fit#); +numeric left_stem,right_stem,outer_jut,alpha; +left_stem=fudged.stem-stem_corr; +right_stem=min(fudged.hair if hefty:-2stem_corr fi,left_stem); +outer_jut=.75jut; x1l=w-x4r=l+letter_fit+outer_jut+.25u; y1=y4=h; +x2-x1=x4-x3; x2l+apex_corr=x3l; y2=y3=-apex_oo; +alpha=diag_ratio(2,right_stem,y1-y2,x4r-x1l-apex_corr); +penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0); +penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0); +z0=whatever[z1r,z2r]=whatever[z3l,z4l]; +if y0>notch_cut: y0:=notch_cut; + fill z0+.5right{up}...{z4-z3}diag_end(3l,4l,1,1,4r,3r) + --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1} + ...{down}z0+.5left--cycle; % left and right diagonals +else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l) + --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals +if serifs: numeric inner_jut; pickup tiny.nib; + prime_points_inside(1,2); prime_points_inside(4,3); + if rt x1'r+jut+.5u+1<=lft x4'l-jut: inner_jut=jut; + else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi + dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % left serif + dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); fi % right serif +penlabels(0,1,2,3,4); endchar; + +cmchar "The letter w"; +beginchar("w",13u#,x_height#,0); +italcorr x_height#*slant+.25u#; +adjust_fit(serif_fit#,serif_fit#); +numeric stem[],outer_jut,upper_notch,alpha,mid_corr; +outer_jut=.7jut; x1l=w-x8r=l+letter_fit+outer_jut+.25u; +stem1=fudged.stem-stem_corr; +stem4=min(fudged.hair if hefty:-2stem_corr fi,stem1); +stem2=if hefty:.1[vair,stem4] else: stem4 fi; +stem3=max(stem2,stem1-3stem_corr); +x2-x1=x4-x3=x6-x5=x8-x7; x2l+apex_corr=x3l; x6l+apex_corr=x7l; +y1=y8=h; y2=y3=y6=y7=-apex_oo; +y4=y5=if monospace: vround .6 fi\\ h; upper_notch=y4-notch_cut; +mid_corr=if monospace or hefty:-.3apex_corr else: .5jut fi; +alpha=diag_ratio(4,stem2-stem3+stem4,y1-y2,x8r-x1l+mid_corr-2apex_corr); +penpos1(alpha*stem1,0); penpos2(alpha*stem1,0); +penpos3(alpha*stem2,0); penpos4(alpha*stem2,0); +penpos5(alpha*stem3,0); penpos6(alpha*stem3,0); +penpos7(alpha*stem4,0); penpos8(alpha*stem4,0); +x4l-x1l=floor(x4l-x1l+.5(x5r+mid_corr-x4r)); % |x5r| $\approx$ |x4r+mid_corr| +z23=whatever[z1r,z2r]=whatever[z3l,z4l]; +z45=whatever[z3r,z4r]=whatever[z5l,z6l]; +z67=whatever[z5r,z6r]=whatever[z7l,z8l]; +fill diag_end(1l,2l,1,1,3r,4r){z4-z3} + ...if y45<upper_notch:(x45,upper_notch)+.5left{up} + --(x45,upper_notch)+.5right{down} else: z45&z45 fi + ...{z6-z5}diag_end(5l,6l,1,1,7r,8r)--diag_end(7r,8r,1,1,8l,7l){z7-z8} + ...if y67>notch_cut:(x67,notch_cut)+.5right{down} + --(x67,notch_cut)+.5left{up} else: z67&z67 fi + ...{z5-z6}special_diag_end(6,5,4,3){z3-z4} + ...if y23>notch_cut:(x23,notch_cut)+.5right{down} + --(x23,notch_cut)+.5left{up} else: z23&z23 fi + ...{z1-z2}diag_end(2r,1r,1,1,1l,2l)--cycle; % diagonals +if serifs: numeric inner_jut[]; pickup tiny.nib; + prime_points_inside(1,2); prime_points_inside(5,6); prime_points_inside(8,7); + if monospace: inner_jut1=inner_jut4=1.5jut; + elseif hefty: inner_jut1=inner_jut4=jut; + else: fill diag_end(6r,5r,1,1,5l,6l)--.5[z5l,z6l] + --.5[z5r,z6r]--cycle;% middle stem + inner_jut2=.7inner_jut1; inner_jut4=1.1inner_jut3; + if rt x1'r+jut+.5u+1<=lft x5'l-.7jut: inner_jut1=jut; + else: rt x1'r+inner_jut1+.5u+1=lft x5'l-inner_jut2; fi + if rt x5'r+jut+.5u+1<=lft x8'l-1.1jut: inner_jut3=jut; + else: rt x5'r+inner_jut3+.5u+1=lft x8'l-inner_jut4; fi + dish_serif(5',6,e,1/3,inner_jut2,f,1/2,inner_jut3); fi % middle serif + dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut1); % left serif + dish_serif(8',7,c,.6,inner_jut4,d,1/2,outer_jut)(dark); fi % right serif +penlabels(0,1,2,3,4,5,6,7,8,23,45,67); endchar; + +cmchar "The letter x"; +beginchar("x",if serifs:9.5u# else:9u# fi,x_height#,0); +italcorr x_height#*slant-.05u#; +adjust_fit(serif_fit# if monospace:+\\.5u#,.5u#+ else:,fi\\ serif_fit#); +numeric stem[],outer_jut,xjut,alpha[]; +stem1=fudged.stem-4stem_corr; stem2=min(fudged.hair,stem1); +outer_jut=.75jut; xjut= if serifs: (stem1-stem2)/4 else: 0 fi; +x1l=l+letter_fit+.1u+outer_jut; x2r=r-letter_fit-.3u-outer_jut-xjut; +x3l=l+letter_fit+outer_jut+xjut; x4r=r-letter_fit-outer_jut; +y1=y2=h; y3=y4=0; +alpha1=diag_ratio(1,stem1,h,x4r-x1l); +alpha2=diag_ratio(1,stem2,h,x2r-x3l); +penpos1(alpha1*stem1,0); penpos2(alpha2*stem2,0); +penpos3(alpha2*stem2,0); penpos4(alpha1*stem1,0); +if hefty: z0=whatever[z1,z4]=whatever[z2,z3]; + x12=x34=x0; y13=y24=y0; + z12=whatever[z2l,z3l]; z13=whatever[z2l,z3l]; + z24=whatever[z2r,z3r]; z34=whatever[z2r,z3r]; + forsuffixes $=13,24,34: z$'=.2[z$,z0]; endfor + fill diag_end(12,1r,.5,1,1l,13')--z13'--diag_end(13',3l,1,.5,3r,34')--z34' + --diag_end(34',4l,.5,1,4r,24')--z24' + --diag_end(24',2r,1,.5,2l,12)--z12--cycle; % diagonals +else: fill diag_end(4r,1r,.5,1,1l,4l) + --diag_end(1l,4l,.5,1,4r,1r)--cycle; % left diagonal + fill diag_end(2l,3l,.5,1,3r,2r) + --diag_end(3r,2r,.5,1,2l,3l)--cycle; fi % right diagonal +if serifs: numeric inner_jut[]; pickup tiny.nib; + prime_points_inside(1,4); prime_points_inside(2,3); + prime_points_inside(3,2); prime_points_inside(4,1); + if rt x1'r+jut+.5u+1<=lft x2'l-jut-xjut: inner_jut1=jut; + else: rt x1'r+inner_jut1+.5u+1=lft x2'l-inner_jut1-xjut; fi + if rt x3'r+jut+.5u+1<=lft x4'l-jut-xjut: inner_jut2=jut; + else: rt x3'r+inner_jut2+.5u+1=lft x4'l-inner_jut2-xjut; fi + dish_serif(1',4,a,1/3,outer_jut,b,2/3,inner_jut1); % upper left serif + dish_serif(4',1,c,2/3,inner_jut2,d,1/3,outer_jut); % lower right serif + dish_serif(2',3,e,2/3,inner_jut1+xjut, + f,1/2,outer_jut+xjut)(dark); % upper right serif + dish_serif(3',2,g,1/2,outer_jut+xjut, + h,2/3,inner_jut2+xjut)(dark); fi % lower left serif +penlabels(0,1,2,3,4,12,13,24,34); endchar; + +cmchar "The letter y"; +beginchar("y",if serifs:9.5u# else:9u# fi,x_height#,desc_depth#); +italcorr x_height#*slant+.25u#; +adjust_fit(serif_fit# if monospace:+\\.5u#,.5u#+ else:,fi\\ serif_fit#); +numeric left_stem,right_stem,bot_stem,bot_vair,outer_jut; +left_stem=fudged.stem-stem_corr; +right_stem=fudged.hair if hefty:-2stem_corr fi; +bot_stem=fudged.hair if hefty:-8stem_corr fi; +bot_vair=Vround(if serifs: vair else:.5[vair,bot_stem] fi); +outer_jut=.75jut; +x1l=w-x4r=l+letter_fit+outer_jut+.25u; y1=y4r=h; y2=y3=0; x2l=x3l; +numeric alpha,alpha[]; x9=3u; y9=bot_vair-d-oo; +alpha1=diag_ratio(2,bot_stem,y1-y3,x4r-x1l-apex_corr); +alpha2=diag_ratio(1,bot_stem,y1-y9,x4r-x9); +if alpha1<alpha2: x2l-x1l=x4r-x3r+apex_corr; alpha=alpha1; +else: alpha=alpha2; z3l=whatever[z9,z4r-(alpha*bot_stem,0)]; fi +penpos3(alpha*bot_stem,0); penpos4(alpha*right_stem,0); +alpha3=(y1++(x2l-x1l))/y1; +penpos1(alpha3*left_stem,0); penpos2(alpha3*left_stem,0); +z0=whatever[z1r,z2r]=z4l+whatever*(z3r-z4r); +if y0>notch_cut: y0:=notch_cut; + fill z0+.5right{up}...{z4r-z3r}diag_end(0,4l,1,1,4r,3r) + --z3r--z2l--diag_end(2l,1l,1,1,1r,2r){z2-z1} + ...{down}z0+.5left--cycle; % left and right diagonals +else: fill z0--diag_end(0,4l,1,1,4r,3r)--z3r--z2l + --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals +penpos5(alpha*bot_stem,0); z5r=whatever[z3r,z4r]; y5-.5vair=-.5d; +if serifs: numeric light_bulb; light_bulb=hround 7/8[hair,flare]; clearpen; + penpos6(vair,-90); penpos7(hair,-180); penpos8(light_bulb,-180); + x6=2u; y6r=-d-oo; y8-.5light_bulb=-.85d; x8r=hround .35u; + fill stroke z3e---z5e...{left}z6e; bulb(6,7,8); % arc and bulb + numeric inner_jut; pickup tiny.nib; + prime_points_inside(1,2); prime_points_inside(4,3); + if rt x1'r+jut+.5u+1<=lft x4'l-jut: inner_jut=jut; + else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi + dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % left serif + dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); % right serif +else: penpos6(bot_vair,-90); x6=2.5u; y6r=-d-oo; + fill stroke z3e---z5e...{left}z6e; % arc + pickup fine.nib; pos6'(bot_vair,-90); z6'=z6; + pos7(2/3[bot_vair,flare],-85); + lft x7l=hround u; bot y7r=vround-.96d-oo; y7l:=good.y y7l; + filldraw stroke term.e(6',7,left,1,4); fi % arc and terminal +penlabels(0,1,2,3,4,5,6,7,8,9); endchar; + +cmchar "The letter z"; +beginchar("z",8u#,x_height#,0); +italcorr x_height#*slant-.5serif_fit#-.3u#; +adjust_fit(0,.5serif_fit#); +numeric arm_thickness[],z_stem; +if hefty: arm_thickness1=Vround(vair-vair_corr); arm_thickness2=vair; + z_stem=.6[vair,stem]; +else: arm_thickness1=vair; arm_thickness2=vair'; z_stem=.9[vair,stem]; fi +pickup tiny.nib; rt x1r=rt x2r=hround(w-.8u); lft x3l=lft x4l=hround .5u; +top y1=h; y2=min(y1,h-2/3arm_thickness1); +bot y4=0; y3=max(y4,2/3arm_thickness2); +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3)); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z2 of currentpen; +fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l + ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r + ---cycle; % diagonal +pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180); +top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps; +arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak +pos7(arm_thickness2,-90); pos8(hair,0); +bot y7r=0; x7=x4; rt x8r=hround(w-.75u); y8=good.y(y7l+beak/1.2)+eps; +arm(7,8,b,beak_darkness,.6beak_jut); % lower arm and beak +penlabels(1,2,3,4,5,6,7,8); endchar; diff --git a/language/turkish/mf/tksub.mf b/language/turkish/mf/tksub.mf new file mode 100644 index 0000000000..bf2e58d502 --- /dev/null +++ b/language/turkish/mf/tksub.mf @@ -0,0 +1,24 @@ +% This file defines characters that go into the Turkish font when |ligs=0|. + +% Adapted from romsub.mf by P. A. MacKay, January, 1987. + +% Character codes \0042--\0043, \0055, \0134, and \0173--\0175 are generated +% when |ligs=0|; + +straight_quotes=oct"042"; minus=ASCII"-"; +backslash=ASCII"\"; +left_brace=ASCII"{"; vertical=ASCII"|"; right_brace=ASCII"}"; + +input sym; + +cmchar "Straight single quote"; +beginchar(oct"043",5u#,asc_height#,0); +italcorr asc_height#*slant+.5 if serifs: flare# else: stem# fi -2u#; +adjust_fit(0,0); +x1=x2=.5w; y2=max(.5[bar_height,x_height]+.5vair,h-x_height); +if serifs: pickup crisp.nib; pos1(flare,0); pos2(vair,0); + y1+.5stem=h; filldraw circ_stroke z1e--z2e; % stem and bulb +else: pickup fine.nib; pos1(stem,0); pos2(vair,0); + top y1=h; filldraw stroke z1e--z2e; fi % stem +penlabels(1,2); endchar; + diff --git a/language/turkish/mf/turkce.mf b/language/turkish/mf/turkce.mf new file mode 100644 index 0000000000..d3c84abf42 --- /dev/null +++ b/language/turkish/mf/turkce.mf @@ -0,0 +1,227 @@ +% Turkish font with full diacriticals, based on the +% Computer Modern Roman family of fonts (by D. E. Knuth, 1979--1985) + +% Adapted for Turkish by P. A. MacKay, January, 1987. + +% If command line includes |pxlfont=128;|, |use_pxl| becomes true +boolean use_pxl; +if unknown pxlfont: use_pxl:=false; else: use_pxl:=true; fi + +% Use the roman questionmark for this class of fonts +% This will come out of romanp.mf if a 256-character font is being +% written, otherwise it will be supplied by conditional code in +% tkpnct.mf. This code is activated by a known value in |romquery|. +if use_pxl: romquery=oct"077"; +else: spanish_shriek=oct"016"; spanish_query=oct"017"; fi + +if not monospace: izafet_dot= if use_pxl: oct"0175" else: oct"0375" fi; fi + +if ligs>0: font_coding_scheme:="TeX Turkish" +else: font_coding_scheme:="TeX typewriter Turkish" fi; + +mode_setup; font_setup; + +input romanu; % upper case (majuscules) unchanged for Turkish +input tkroml; % lower case (minuscules) romanl with dotless i +input romand; % numerals +if ligs>0: input comlig; fi % ligatures common with italic text +input tkpnct; % punctuation common to roman and italic (reduced set) +input aynhmz; % ayn and hamza, izafet dot |iff not monospace| +if use_pxl: +else: + input greeku; % upper case Greek letters + input romanp; % ampersand, question marks, currency sign + input romspl; % lowercase specials (dotless \i, ligature \ae, etc.) + input romspu; % uppercase specials (\AE, \OE, \O) + input accent; % accents common to roman and italic text + if ligs<=1: input romsub; fi % substitutes for ligatures + + ligtable "!": "`" =: spanish_shriek; + ligtable "?": "`" =: spanish_query; + extra_endchar:=extra_endchar&"charcode:=charcode+code_offset"; + code_offset:=128; % move accented chars into 128..255 region +fi +input tkdotu; % upper case with dotted diacriticals +input tkdotl; % lower case with dotted diacriticals +input tkaccu; % upper case with assorted accents +input tkaccl; % lower case with assorted accents +if ligs<=0: input tksub; fi % substitutes for ligatures + +% A thoroughly mixed list of names for the accented characters. +% These follow English, Arabic and Turkish conventions rather arbitrarily +% Only the letters that appear more than once in the ligtable are coded here. + +if use_pxl: + HAT_A=oct"044"; CHIM=oct"013"; DAD=oct"000"; DHAL=oct"014"; + CUP_G=oct"015"; GHAYN=oct"001"; QAF=oct"004"; + DOT_O=oct"005"; TTA=oct"007"; + DOT_U=oct"010"; HAT_U=oct"046"; + hat_a=oct"074"; chim=oct"033"; dhal=oct"034"; dad=oct"020"; + cup_g=oct"035"; ghayn=oct"021"; + hha=oct"022"; kha=oct"036"; dot_i=oct"023"; hat_i=oct"075"; + qaf=oct"024"; gnaf=oct"037"; dot_o=oct"025"; hat_o=oct"040"; + tta=oct"027"; dot_u=oct"030"; hat_u=oct"076"; +else: + HAT_A=oct"0244"; CHIM=oct"0213"; DAD=oct"0200"; DHAL=oct"0214"; + CUP_G=oct"0215"; GHAYN=oct"0201"; QAF=oct"0204"; + DOT_O=oct"0205"; TTA=oct"0207"; + DOT_U=oct"0210"; HAT_U=oct"0246"; + hat_a=oct"0274"; chim=oct"0233"; dhal=oct"0234"; dad=oct"0220"; + cup_g=oct"0235"; ghayn=oct"0221"; + hha=oct"0222"; kha=oct"0236"; dot_i=oct"0223"; hat_i=oct"0275"; + qaf=oct"0224"; gnaf=oct"0237"; dot_o=oct"0225"; hat_o=oct"0240"; + tta=oct"0227"; dot_u=oct"0230"; hat_u=oct"0276"; +fi + +font_slant slant; font_x_height x_height#; + +% Accent ligatures not complicated by questions of kerning +% good for both monospace and variable-space fonts. + +ligtable "C": ":"=:CHIM; ligtable "G": ":"=:GHAYN, "="=:CUP_G; +ligtable "H": "="=:if use_pxl: oct"016" else: oct"0216" fi, + "!"=:if use_pxl: oct"002" else: oct"0202" fi; +ligtable "N": "="=:if use_pxl: oct"017" else: oct"0217" fi; +ligtable "S": ":"=:if use_pxl: oct"052" else: oct"0252" fi, + "="=:if use_pxl: oct"0136" else: oct"0336" fi, + "!"=:if use_pxl: oct"006" else: oct"0206" fi; +ligtable "U": ":"=:DOT_U, "="=:HAT_U; +ligtable "Z": ":"=:if use_pxl: oct"011" else: oct"0211" fi, + "="=:if use_pxl: oct"0137" else: oct"0337" fi, + "!"=:if use_pxl: oct"012" else: oct"0212" fi; + +ligtable "d": "="=:dhal, "!"=:dad; ligtable "i": ":"=:dot_i, "="=:hat_i; +ligtable "s": ":"=:if use_pxl: oct"053" else: oct"0253" fi, + "="=:if use_pxl: oct"0176" else: oct"0376" fi, + "!"=:if use_pxl: oct"026" else: oct"0226" fi; +ligtable "z": ":"=:if use_pxl: oct"031" else: oct"0231" fi, + "="=:if use_pxl: oct"0177" else: oct"0377" fi, + "!"=:if use_pxl: oct"032" else: oct"0232" fi; + +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; + ligtable "A": "="=:HAT_A; ligtable "a": "="=:hat_a; + ligtable "D": "="=:DHAL, "!"=:DAD; + ligtable "I": ":"=:if use_pxl: oct"003" else: oct"0203" fi, + "="=:if use_pxl: oct"045" else: oct"0245" fi; + ligtable "K": "!"=:QAF; ligtable "k": "!"=:qaf; + ligtable "O": ":"=:DOT_O; ligtable "o": ":"=:dot_o; % no |hat_o| here + ligtable "T": "!"=:TTA; ligtable "t": "!"=:tta; + ligtable "c": ":"=:chim; ligtable "g": ":"=:ghayn, "="=:cup_g; + ligtable "h": "="=:kha, "!"=:hha; ligtable "n": "="=:gnaf; + ligtable "u": ":"=:dot_u, "="=:hat_u; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning + +% The following ligtable entries are based on the entries in +% roman.mf. It has been necessary to extract many parts of the +% original entries in order to keep the ligature structure clear. + + ligtable "k": "!"=:qaf, % new ligature---kerns from what follows + qaf: % remainder---kerns only + if serifs: "v": "a" kern -u#, hat_a kern -u#, fi\\ + "w": "e" kern k#, + "a" kern k#, hat_a kern k#, "c" kern k#, chim kern k#, + "o" kern k#, dot_o kern k#, hat_o kern k#; + + ligtable "P": "A" kern kk#, HAT_A kern kk#, + "y": "o" kern k#, hat_o kern k#, dot_o kern k#, + "e" kern k#, "a" kern k#, hat_a kern k#, "." kern kk#, "," kern kk#; + + ligtable "F": "V": "W": if serifs: % remainder---kerns only + "o" kern kk#, hat_o kern kk#, dot_o kern kk#, + "e" kern kk#, "u" kern kk#, dot_u kern kk#, hat_u kern k#, + "r" kern kk#, "a" kern kk#, hat_a kern kk#, + "A" kern kkk#, HAT_A kern kkk#, + else: "o" kern k#, hat_o kern k#, dot_o kern k#, + "e" kern k#, "u" kern k#, dot_u kern k#, hat_u kern k#, + "r" kern k#, "a" kern k#, hat_a kern k#, + "A" kern kk#, HAT_A kern kk#, fi + "K": "!"=:QAF, % new ligature---kerns from what follows + QAF: "X": "O" kern k#, DOT_O kern k#, + "C" kern k#, CHIM kern k#, "G" kern k#, GHAYN kern k#, CUP_G kern k#, + "Q" kern k#; + + ligtable "T": "!"=:TTA, % new ligature---kerns from what follows + TTA: "y" kern if serifs: k# else: kk# fi, % remainder---kerns only + "Y": "e" kern kk#, "o" kern kk#, hat_o kern kk#, dot_o kern kk#, + "r" kern kk#, "a" kern kk#, hat_a kern kk#, + "A" kern kk#, HAT_A kern kk#, + "u" kern kk#, dot_u kern kk#, hat_u kern kk#; + + ligtable "D": "="=:DHAL, "!"=:DAD, % new ligature---kerns from what follows + "X" kern k#, "W" kern k#, "A" kern k#, HAT_A kern k#, + "V" kern k#, "Y" kern k#; + + ligtable "O": ":"=:DOT_O, % another new ligature in this group + DOT_O: DHAL: DAD: % remainder---kerns only + "X" kern k#, "W" kern k#, "A" kern k#, HAT_A kern k#, + "V" kern k#, "Y" kern k#; + + ligtable "c": ":"=:chim, % new ligature---kerns from what follows + if serifs: "h" kern k#, hha kern k#, kha kern k#, + "k" kern k#, qaf kern k#; fi + ligtable "h": "="=:kha, "!"=:hha, % another new ligature in this group + if serifs: "t" kern k#, tta kern k#, "u" kern k#, dot_u kern k#, + "b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#; fi + ligtable "n": "="=:gnaf, % another new ligature in this group + if serifs: "t" kern k#, tta kern k#, + "u" kern k#, dot_u kern k#, hat_u kern k#, + "b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#; fi + if serifs: ligtable hha: kha: "m": gnaf: % remainder---kerns only + "t" kern k#, "u" kern k#, dot_u kern k#, hat_u kern k#, + "b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#; + ligtable chim: + "h" kern k#, hha kern k#, kha kern k#, + "k" kern k#, qaf kern k#; fi + + ligtable "o": ":"=:dot_o, "="=:hat_o, %new ligature---kerns from what follows + "e" kern -k#, "o" kern -k#, hat_o kern -k#, dot_o kern -k#, "x" kern k#, + "d" kern -k#, dhal kern -k#, dad kern -k#, + "c" kern -k#, chim kern -k#, "q" kern -k#, + if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi + "y" kern k#, "w" kern k#; + ligtable "a": "="=:hat_a, % another new ligature in this group + if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi + "y" kern k#, "w" kern k#; + ligtable "t": "!"=:tta, % another new ligature in this group + "y" kern k#, "w" kern k#; + ligtable "u": ":"=:dot_u, "="=:hat_u, + "w" kern k#; % another new ligature in this group + ligtable hat_o: dot_o: "b": "p": % remainder---kerns only + "e" kern -k#, "o" kern -k#, hat_o kern -k#, dot_o kern -k#, "x" kern k#, + "d" kern -k#, dhal kern -k#, dad kern -k#, + "c" kern -k#, chim kern -k#, "q" kern -k#, + hat_a: if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi + tta: "y" kern k#, + dot_u: hat_u: "w" kern k#; + + ligtable "A": "="=:HAT_A, % new ligature---kerns follow + HAT_A: if serifs: "R": fi % remainder---kerns only + "t" kern k#, tta kern k#, + "C" kern k#, CHIM kern k#, + "O" kern k#, DOT_O kern k#, + "G" kern k#, GHAYN kern k#, CUP_G kern k#, + "U" kern k#, DOT_U kern k#, HAT_U kern k#, "Q" kern k#, + "L": "T" kern kk#, TTA kern kk#, + "Y" kern kk#, "V" kern kkk#, "W" kern kkk#; + + ligtable "g": ":"=:ghayn, "="=:cup_g, % new ligature + "j" kern -k#; % logjam (might happen in a foreign word.) + ligtable "I": ":"=:if use_pxl: oct"003" else: oct"0203" fi, + "="=:if use_pxl: oct"045" else: oct"0245" fi, % new ligature + "I" kern -k#; % Possible for ikinci Mehmed ? + ligtable oct"043": oct"100": % kerns for ayn and hamza + "A" kern kkk#, HAT_A kern kkk#, + "a" kern k#, hat_a kern k#; + ligtable ".": "."=:if use_pxl: oct"0175" else: oct"0375" fi; + ligtable "f": % Turkish cannot use the ordinary ligatures for |"f"|. + hat_i kern 3u#, dot_i kern 3u#, % and therefore needs these kerns + oct"043" kern 3u#, oct"0100" kern 3u#; +fi + % ligatures for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file +bye. diff --git a/language/turkish/mf/turkit.mf b/language/turkish/mf/turkit.mf new file mode 100644 index 0000000000..5a222cf6ed --- /dev/null +++ b/language/turkish/mf/turkit.mf @@ -0,0 +1,198 @@ +% Turkish Text Italic with full diacriticals, based on +% The Computer Modern Text Italic family (by D. E. Knuth, 1979--1985) + +% Adapted for Turkish by P. A. MacKay, January, 1987. + +% If command line includes |pxlfont=128;|, |use_pxl| becomes true +boolean use_pxl; +if unknown pxlfont: use_pxl:=false; else: use_pxl:=true; fi + +% Use the roman questionmark for this class of fonts +% This will come out of romanp.mf if a 256-character font is being +% written, otherwise it will be supplied by conditional code in +% tkpnct.mf. This code is activated by a known value in |romquery|. +if use_pxl: romquery=oct"077"; +else: spanish_shriek=oct"016"; spanish_query=oct"017"; fi + +if not monospace: izafet_dot= if use_pxl: oct"0175" else: oct"0375" fi ; fi + +if ligs>0: font_coding_scheme:="TeX Turkish" +else: font_coding_scheme:="TeX typewriter Turkish" fi; + +mode_setup; font_setup; + +input romanu; % upper case (majuscules) +input tkital; % itall.mf lower case (minuscules) with undotted i +input itald; % numerals +if ligs>0: input comlig; fi % ligatures common with roman text +input tkpnct; % punctuation common to roman and italic (reduced set) +input aynhmz; % ayn and hamza, izafet dot |iff not monospace| +if use_pxl: +else: + input greeku; % upper case Greek letters + input romanp; % ampersand, question marks, currency sign + input romspl; % lowercase specials (dotless \i, ligature \ae, etc.) + input romspu; % uppercase specials (\AE, \OE, \O) + input accent; % accents common to roman and italic text + if ligs<=1: input romsub; fi % substitutes for ligatures + + ligtable "!": "`" =: spanish_shriek; + ligtable "?": "`" =: spanish_query; + extra_endchar:=extra_endchar&"charcode:=charcode+code_offset"; + code_offset:=128; % move accented chars into 128..255 region +fi +input tkdotu; % upper case with dotted diacriticals +input tkdtil; % lower case italic with dotted diacriticals +input tkaccu; % upper case with assorted acents +input tkacil; % lower case italic assorted accents +if ligs<=0: input tksub; fi % substitutes for ligatures + +% A thoroughly mixed list of names for the accented characters. +% These follow English, Arabic and Turkish conventions rather arbitrarily +% Only the letters that appear more than once in the ligtable are coded here. + +if use_pxl: + HAT_A=oct"044"; CHIM=oct"013"; DAD=oct"000"; DHAL=oct"014"; + CUP_G=oct"015"; GHAYN=oct"001"; QAF=oct"004"; + DOT_O=oct"005"; TTA=oct"007"; + DOT_U=oct"010"; HAT_U=oct"046"; + hat_a=oct"074"; chim=oct"033"; dhal=oct"034"; dad=oct"020"; + cup_g=oct"035"; ghayn=oct"021"; + hha=oct"022"; kha=oct"036"; dot_i=oct"023"; hat_i=oct"075"; + qaf=oct"024"; gnaf=oct"037"; dot_o=oct"025"; hat_o=oct"040"; + tta=oct"027"; dot_u=oct"030"; hat_u=oct"076"; +else: + HAT_A=oct"0244"; CHIM=oct"0213"; DAD=oct"0200"; DHAL=oct"0214"; + CUP_G=oct"0215"; GHAYN=oct"0201"; QAF=oct"0204"; + DOT_O=oct"0205"; TTA=oct"0207"; + DOT_U=oct"0210"; HAT_U=oct"0246"; + hat_a=oct"0274"; chim=oct"0233"; dhal=oct"0234"; dad=oct"0220"; + cup_g=oct"0235"; ghayn=oct"0221"; + hha=oct"0222"; kha=oct"0236"; dot_i=oct"0223"; hat_i=oct"0275"; + qaf=oct"0224"; gnaf=oct"0237"; dot_o=oct"0225"; hat_o=oct"0240"; + tta=oct"0227"; dot_u=oct"0230"; hat_u=oct"0276"; +fi + +font_slant slant; font_x_height x_height#; + +% Accent ligatures not complicated by questions of kerning +% good for both monospace and variable-space fonts. + +ligtable "C": ":"=:CHIM; ligtable "G": ":"=:GHAYN, "="=:CUP_G; +ligtable "H": "="=:if use_pxl: oct"016" else: oct"0216" fi, + "!"=:if use_pxl: oct"002" else: oct"0202" fi; +ligtable "I": ":"=:if use_pxl: oct"003" else: oct"0203" fi, + "="=:if use_pxl: oct"045" else: oct"0245" fi; +ligtable "N": "="=:if use_pxl: oct"017" else: oct"0217" fi; +ligtable "S": ":"=:if use_pxl: oct"052" else: oct"0252" fi, + "="=:if use_pxl: oct"0136" else: oct"0336" fi, + "!"=:if use_pxl: oct"006" else: oct"0206" fi; +ligtable "U": ":"=:DOT_U, "="=:HAT_U; +ligtable "Z": ":"=:if use_pxl: oct"011" else: oct"0211" fi, + "="=:if use_pxl: oct"0137" else: oct"0337" fi, + "!"=:if use_pxl: oct"012" else: oct"0212" fi; + +ligtable "a": "="=:hat_a; +ligtable "g": ":"=:ghayn, "="=:cup_g; +ligtable "h": "="=:kha, "!"=:hha; +ligtable "i": ":"=:dot_i, "="=:hat_i; +ligtable "s": ":"=:if use_pxl: oct"053" else: oct"0253" fi, + "="=:if use_pxl: oct"0176" else: oct"0376" fi, + "!"=:if use_pxl: oct"026" else: oct"0226" fi; +ligtable "t": "!"=:tta; +ligtable "u": ":"=:dot_u, "="=:hat_u; +ligtable "z": ":"=:if use_pxl: oct"031" else: oct"0231" fi, + "="=:if use_pxl: oct"0177" else: oct"0377" fi, + "!"=:if use_pxl: oct"032" else: oct"0232" fi; + +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; + letter_fit#:=letter_fit:=0; + ligtable "A": "="=:HAT_A; + ligtable "D": "="=:DHAL, "!"=:DAD; + ligtable "K": "!"=:QAF; ligtable "k": "!"=:qaf; + ligtable "O": ":"=:DOT_O; % no |hat_o| here + ligtable "T": "!"=:TTA; + ligtable "c": ":"=:chim; ligtable "d": "="=:dhal, "!"=:dad; + ligtable "n": "="=:gnaf; ligtable "o": ":"=:dot_o; % no |hat_o| here +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning + +% The following ligtable entries are based on the entries in +% roman.mf. It has been necessary to extract many parts of the +% original entries in order to keep the ligature structure clear. + + ligtable "F": "V": "o" kern kk#, dot_o kern kk#, hat_o kern kk#, + "e" kern kk#, + "u" kern kk#, dot_u kern kk#, hat_u kern kk#, + "r" kern kk#, "a" kern kk#, hat_a kern kk#, + "A" kern kkk#, HAT_A kern kkk#, + "K": "!"=:QAF, + QAF: "X": "O" kern k#, DOT_O kern k#, "C" kern k#, CHIM kern k#, + "G" kern k#, GHAYN kern k#, CUP_G kern k#, "Q" kern k#; + + ligtable "T": "!"=:TTA, TTA: "y" kern kk#, + "Y": "e" kern kk#, "o" kern kk#, dot_o kern kk#, hat_o kern kk#, + "r" kern kk#, "a" kern kk#, hat_a kern kk#, + "u" kern kk#, dot_u kern kk#, hat_u kern kk#, + "P": "W": "A" kern kk#, HAT_A kern kk#; + + ligtable "D": "="=:DHAL, "!"=:DAD, + DHAL: DAD: "X" kern k#, "W" kern k#, "A" kern k#, HAT_A kern k#, + "V" kern k#, "Y" kern k#; + ligtable "O": ":"=:DOT_O, + DOT_O: "X" kern k#, "W" kern k#, "A" kern k#, HAT_A kern k#, + "V" kern k#, "Y" kern k#; + + ligtable "A": "="=: HAT_A, + HAT_A: "R": "n" kern k#, gnaf kern k#, + "l" kern k#, "r" kern k#, "u" kern k#, dot_u kern k#, hat_u kern k#, + "m" kern k#, "t" kern k#, tta kern k#, + "i" kern k#, dot_i kern k#, hat_i kern k#, + "C" kern k#, CHIM kern k#, "O" kern k#, DOT_O kern k#, + "G" kern k#, GHAYN kern k#, CUP_G kern k#, + "h" kern k#, kha kern k#, hha kern k#, "b" kern k#, + "U" kern k#, DOT_U kern k#, HAT_U kern k#, + "k" kern k#, qaf kern k#, "v" kern k#, "w" kern k#, "Q" kern k#, + "L": "T" kern kk#, TTA kern kk#, + "Y" kern kk#, "V" kern kkk#, "W" kern kkk#, + "b": "e": "p": "r": "e" kern -u#, + "a" kern -u#, hat_a kern -u#, + "o" kern -u#, dot_o kern -u#, hat_o kern -u#, + "d" kern -u#, dhal kern -u#, dad kern -u#, + "c" kern -u#, chim kern -u#, + "g" kern -u#, ghayn kern -u#, cup_g kern -u#, "q" kern -u#; + + ligtable "c": ":"=:chim, + chim: "e" kern -u#, + "a" kern -u#, hat_a kern -u#, + "o" kern -u#, dot_o kern -u#, hat_o kern -u#, + "d" kern -u#, dhal kern -u#, dad kern -u#, + "c" kern -u#, chim kern -u#, + "g" kern -u#, ghayn kern -u#, cup_g kern -u#, "q" kern -u#; + + ligtable "d": "="=:dhal, "!"=:dad, + dhal: dad: "w": "l": "l" kern +u#; + + ligtable "o": ":"=:dot_o, "="=:hat_o, + dot_o: hat_o: "e" kern -u#, + "a" kern -u#, hat_a kern -u#, + "o" kern -u#, dot_o kern -u#, hat_o kern -u#, + "d" kern -u#, dhal kern -u#, dad kern -u#, + "c" kern -u#, chim kern -u#, + "g" kern -u#, ghayn kern -u#, cup_g kern -u#, "q" kern -u#; + ligtable "n": "="=:gnaf, "'" kern kkk#, gnaf: "'" kern kk#; + ligtable oct"043": oct"100": % kerns for ayn and hamza + "A" kern kkk#, HAT_A kern kkk#, + "a" kern k#, hat_a kern k#; + ligtable ".": "."=:if use_pxl: oct"0175" else: oct"0375" fi; % izafet dot + ligtable "f": % Turkish cannot use the ordinary ligatures for |"f"|. + hat_i kern 3u#, dot_i kern 3u#, % and therefore needs these kerns + oct"043" kern 3u#, oct"0100" kern 3u#; +fi + % ligatures for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file +bye. diff --git a/language/turkish/mf/wtkr10.mf b/language/turkish/mf/wtkr10.mf new file mode 100644 index 0000000000..b28a207aa0 --- /dev/null +++ b/language/turkish/mf/wtkr10.mf @@ -0,0 +1,75 @@ +% Turkish font adapted from Computer Modern Roman 10 point +if unknown cmbase: input cmbase fi + +font_identifier:="TKR"; font_size 10pt#; + +u#:=20/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=0pt#; % extra space added to all sidebars + +body_height#:=270/36pt#; % height of tallest characters +asc_height#:=250/36pt#; % height of lowercase ascenders +cap_height#:=246/36pt#; % height of caps +fig_height#:=232/36pt#; % height of numerals +x_height#:=155/36pt#; % height of lowercase without ascenders +math_axis#:=90/36pt#; % axis of symmetry for math symbols +bar_height#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=8/36pt#; % diameter of rounded corners +fine#:=7/36pt#; % diameter of sharply rounded corners +thin_join#:=7/36pt#; % width of extrafine details +hair#:=9/36pt#; % lowercase hairline breadth +stem#:=25/36pt#; % lowercase stem breadth +curve#:=30/36pt#; % lowercase curve breadth +ess#:=27/36pt#; % breadth in middle of lowercase s +flare#:=33/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=38/36pt#; % diameter of dots +cap_hair#:=11/36pt#; % uppercase hairline breadth +cap_stem#:=32/36pt#; % uppercase stem breadth +cap_curve#:=37/36pt#; % uppercase curve breadth +cap_ess#:=35/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.4pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=20/36pt#; % vertical distance from serif base to tangent +jut#:=28/36pt#; % protrusion of lowercase serifs +cap_jut#:=37/36pt#; % protrusion of uppercase serifs +beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs +beak#:=70/36pt#; % vertical protrusion of beak serifs +vair#:=8/36pt#; % vertical diameter of hairlines +notch_cut#:=10pt#; % maximum breadth above or below notches +bar#:=11/36pt#; % lowercase bar thickness +slab#:=11/36pt#; % serif and arm thickness +cap_bar#:=11/36pt#; % uppercase bar thickness +cap_band#:=11/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches +serif_drop#:=4/36pt#; % vertical drop of sloped serifs +stem_corr#:=1/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=8/36pt#; % amount of overshoot for curves +apex_o#:=8/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + +generate turkce % switch to the driver file diff --git a/language/turkish/mf/wtkti10.mf b/language/turkish/mf/wtkti10.mf new file mode 100644 index 0000000000..53fbab13ee --- /dev/null +++ b/language/turkish/mf/wtkti10.mf @@ -0,0 +1,75 @@ +% Turkish font adapted from Computer Modern Text Italic 10 point +if unknown cmbase: input cmbase fi + +font_identifier:="TKTI"; font_size 10pt#; + +u#:=18.4/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=9.2/36pt#; % extra space added to all sidebars + +body_height#:=270/36pt#; % height of tallest characters +asc_height#:=250/36pt#; % height of lowercase ascenders +cap_height#:=246/36pt#; % height of caps +fig_height#:=232/36pt#; % height of numerals +x_height#:=155/36pt#; % height of lowercase without ascenders +math_axis#:=90/36pt#; % axis of symmetry for math symbols +bar_height#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +crisp#:=8/36pt#; % diameter of serif corners +tiny#:=8/36pt#; % diameter of rounded corners +fine#:=7/36pt#; % diameter of sharply rounded corners +thin_join#:=7/36pt#; % width of extrafine details +hair#:=11/36pt#; % lowercase hairline breadth +stem#:=23/36pt#; % lowercase stem breadth +curve#:=28/36pt#; % lowercase curve breadth +ess#:=27/36pt#; % breadth in middle of lowercase s +flare#:=29/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=38/36pt#; % diameter of dots +cap_hair#:=11/36pt#; % uppercase hairline breadth +cap_stem#:=29/36pt#; % uppercase stem breadth +cap_curve#:=34/36pt#; % uppercase curve breadth +cap_ess#:=31/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.4pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=20/36pt#; % vertical distance from serif base to tangent +jut#:=30/36pt#; % protrusion of lowercase serifs +cap_jut#:=34/36pt#; % protrusion of uppercase serifs +beak_jut#:=9/36pt#; % horizontal protrusion of beak serifs +beak#:=70/36pt#; % vertical protrusion of beak serifs +vair#:=8/36pt#; % vertical diameter of hairlines +notch_cut#:=10pt#; % maximum breadth above or below notches +bar#:=11/36pt#; % lowercase bar thickness +slab#:=11/36pt#; % serif and arm thickness +cap_bar#:=11/36pt#; % uppercase bar thickness +cap_band#:=11/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches +serif_drop#:=4/36pt#; % vertical drop of sloped serifs +stem_corr#:=1/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=8/36pt#; % amount of overshoot for curves +apex_o#:=8/36pt#; % amount of overshoot for diagonal junctions + +slant:=.25; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=true; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + +generate turkit % switch to the driver file diff --git a/language/turkish/misc/wtkr10.pl b/language/turkish/misc/wtkr10.pl new file mode 100644 index 0000000000..3026a54b5d --- /dev/null +++ b/language/turkish/misc/wtkr10.pl @@ -0,0 +1,1714 @@ +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM O 20757166124) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.333334) + (STRETCH R 0.166667) + (SHRINK R 0.111112) + (XHEIGHT R 0.430555) + (QUAD R 1.000003) + (EXTRASPACE R 0.111112) + ) +(LIGTABLE + (LABEL O 140) + (LIG O 140 O 134) + (STOP) + (LABEL O 47) + (LIG O 47 O 42) + (KRN O 77 R 0.111112) + (KRN O 41 R 0.111112) + (STOP) + (LABEL O 55) + (LIG O 55 O 173) + (STOP) + (LABEL O 173) + (LIG O 55 O 174) + (STOP) + (LABEL O 40) + (KRN C l R -0.277779) + (KRN C L R -0.319446) + (STOP) + (LABEL O 41) + (LIG O 140 O 16) + (STOP) + (LABEL O 77) + (LIG O 140 O 17) + (STOP) + (LABEL C C) + (LIG O 72 O 213) + (STOP) + (LABEL C G) + (LIG O 72 O 201) + (LIG O 75 O 215) + (STOP) + (LABEL C H) + (LIG O 75 O 216) + (LIG O 41 O 202) + (STOP) + (LABEL C N) + (LIG O 75 O 217) + (STOP) + (LABEL C S) + (LIG O 72 O 252) + (LIG O 75 O 336) + (LIG O 41 O 206) + (STOP) + (LABEL C U) + (LIG O 72 O 210) + (LIG O 75 O 246) + (STOP) + (LABEL C Z) + (LIG O 72 O 211) + (LIG O 75 O 337) + (LIG O 41 O 212) + (STOP) + (LABEL C d) + (LIG O 75 O 234) + (LIG O 41 O 220) + (STOP) + (LABEL C i) + (LIG O 72 O 223) + (LIG O 75 O 275) + (STOP) + (LABEL C s) + (LIG O 72 O 253) + (LIG O 75 O 376) + (LIG O 41 O 226) + (STOP) + (LABEL C z) + (LIG O 72 O 231) + (LIG O 75 O 377) + (LIG O 41 O 232) + (STOP) + (LABEL C k) + (LIG O 41 O 224) + (LABEL C v) + (LABEL O 224) + (KRN C a R -0.055555) + (KRN O 274 R -0.055555) + (LABEL C w) + (KRN C e R -0.027779) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (KRN C c R -0.027779) + (KRN O 233 R -0.027779) + (KRN C o R -0.027779) + (KRN O 225 R -0.027779) + (KRN O 240 R -0.027779) + (STOP) + (LABEL C P) + (KRN C A R -0.083334) + (KRN O 244 R -0.083334) + (LABEL C y) + (KRN C o R -0.027779) + (KRN O 240 R -0.027779) + (KRN O 225 R -0.027779) + (KRN C e R -0.027779) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (KRN O 56 R -0.083334) + (KRN O 54 R -0.083334) + (STOP) + (LABEL C F) + (LABEL C V) + (LABEL C W) + (KRN C o R -0.083334) + (KRN O 240 R -0.083334) + (KRN O 225 R -0.083334) + (KRN C e R -0.083334) + (KRN C u R -0.083334) + (KRN O 230 R -0.083334) + (KRN O 276 R -0.027779) + (KRN C r R -0.083334) + (KRN C a R -0.083334) + (KRN O 274 R -0.083334) + (KRN C A R -0.111112) + (KRN O 244 R -0.111112) + (LABEL C K) + (LIG O 41 O 204) + (LABEL C X) + (LABEL O 204) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C Q R -0.027779) + (STOP) + (LABEL C T) + (LIG O 41 O 207) + (LABEL O 207) + (KRN C y R -0.027779) + (LABEL C Y) + (KRN C e R -0.083334) + (KRN C o R -0.083334) + (KRN O 240 R -0.083334) + (KRN O 225 R -0.083334) + (KRN C r R -0.083334) + (KRN C a R -0.083334) + (KRN O 274 R -0.083334) + (KRN C A R -0.083334) + (KRN O 244 R -0.083334) + (KRN C u R -0.083334) + (KRN O 230 R -0.083334) + (KRN O 276 R -0.083334) + (STOP) + (LABEL C D) + (LIG O 75 O 214) + (LIG O 41 O 200) + (KRN C X R -0.027779) + (KRN C W R -0.027779) + (KRN C A R -0.027779) + (KRN O 244 R -0.027779) + (KRN C V R -0.027779) + (KRN C Y R -0.027779) + (STOP) + (LABEL C O) + (LIG O 72 O 205) + (LABEL O 200) + (LABEL O 205) + (LABEL O 214) + (KRN C X R -0.027779) + (KRN C W R -0.027779) + (KRN C A R -0.027779) + (KRN O 244 R -0.027779) + (KRN C V R -0.027779) + (KRN C Y R -0.027779) + (STOP) + (LABEL C c) + (LIG O 72 O 233) + (KRN C h R -0.027779) + (KRN O 222 R -0.027779) + (KRN O 236 R -0.027779) + (KRN C k R -0.027779) + (KRN O 224 R -0.027779) + (STOP) + (LABEL C h) + (LIG O 75 O 236) + (LIG O 41 O 222) + (KRN C t R -0.027779) + (KRN O 227 R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + (STOP) + (LABEL C n) + (LIG O 75 O 237) + (KRN C t R -0.027779) + (KRN O 227 R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN O 276 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + (STOP) + (LABEL C m) + (LABEL O 222) + (LABEL O 236) + (LABEL O 237) + (KRN C t R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN O 276 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + (STOP) + (LABEL O 233) + (KRN C h R -0.027779) + (KRN O 222 R -0.027779) + (KRN O 236 R -0.027779) + (KRN C k R -0.027779) + (KRN O 224 R -0.027779) + (STOP) + (LABEL C o) + (LIG O 72 O 225) + (LIG O 75 O 240) + (KRN C e R 0.027779) + (KRN C o R 0.027779) + (KRN O 240 R 0.027779) + (KRN O 225 R 0.027779) + (KRN C x R -0.027779) + (KRN C d R 0.027779) + (KRN O 234 R 0.027779) + (KRN O 220 R 0.027779) + (KRN C c R 0.027779) + (KRN O 233 R 0.027779) + (KRN C q R 0.027779) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + (STOP) + (LABEL C a) + (LIG O 75 O 274) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + (STOP) + (LABEL C t) + (LIG O 41 O 227) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + (STOP) + (LABEL C u) + (LIG O 72 O 230) + (LIG O 75 O 276) + (KRN C w R -0.027779) + (STOP) + (LABEL C b) + (LABEL C p) + (LABEL O 225) + (LABEL O 240) + (KRN C e R 0.027779) + (KRN C o R 0.027779) + (KRN O 240 R 0.027779) + (KRN O 225 R 0.027779) + (KRN C x R -0.027779) + (KRN C d R 0.027779) + (KRN O 234 R 0.027779) + (KRN O 220 R 0.027779) + (KRN C c R 0.027779) + (KRN O 233 R 0.027779) + (KRN C q R 0.027779) + (LABEL O 274) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (LABEL O 227) + (KRN C y R -0.027779) + (LABEL O 230) + (LABEL O 276) + (KRN C w R -0.027779) + (STOP) + (LABEL C A) + (LIG O 75 O 244) + (LABEL C R) + (LABEL O 244) + (KRN C t R -0.027779) + (KRN O 227 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C U R -0.027779) + (KRN O 210 R -0.027779) + (KRN O 246 R -0.027779) + (KRN C Q R -0.027779) + (LABEL C L) + (KRN C T R -0.083334) + (KRN O 207 R -0.083334) + (KRN C Y R -0.083334) + (KRN C V R -0.111112) + (KRN C W R -0.111112) + (STOP) + (LABEL C g) + (LIG O 72 O 221) + (LIG O 75 O 235) + (KRN C j R 0.027779) + (STOP) + (LABEL C I) + (LIG O 72 O 203) + (LIG O 75 O 245) + (KRN C I R 0.027779) + (STOP) + (LABEL O 43) + (LABEL O 100) + (KRN C A R -0.111112) + (KRN O 244 R -0.111112) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (STOP) + (LABEL O 56) + (LIG O 56 O 375) + (STOP) + (LABEL C f) + (KRN O 275 R 0.166667) + (KRN O 223 R 0.166667) + (KRN O 43 R 0.166667) + (KRN O 100 R 0.166667) + (STOP) + ) +(CHARACTER O 0 + (CHARWD R 0.625002) + (CHARHT R 0.683332) + ) +(CHARACTER O 1 + (CHARWD R 0.833336) + (CHARHT R 0.683332) + ) +(CHARACTER O 2 + (CHARWD R 0.777781) + (CHARHT R 0.683332) + ) +(CHARACTER O 3 + (CHARWD R 0.694446) + (CHARHT R 0.683332) + ) +(CHARACTER O 4 + (CHARWD R 0.666669) + (CHARHT R 0.683332) + ) +(CHARACTER O 5 + (CHARWD R 0.750002) + (CHARHT R 0.683332) + ) +(CHARACTER O 6 + (CHARWD R 0.722224) + (CHARHT R 0.683332) + ) +(CHARACTER O 7 + (CHARWD R 0.777781) + (CHARHT R 0.683332) + ) +(CHARACTER O 10 + (CHARWD R 0.722224) + (CHARHT R 0.683332) + ) +(CHARACTER O 11 + (CHARWD R 0.777781) + (CHARHT R 0.683332) + ) +(CHARACTER O 12 + (CHARWD R 0.722224) + (CHARHT R 0.683332) + ) +(CHARACTER O 16 + (CHARWD R 0.277779) + (CHARHT R 0.5) + (CHARDP R 0.194445) + ) +(CHARACTER O 17 + (CHARWD R 0.472224) + (CHARHT R 0.5) + (CHARDP R 0.194445) + ) +(CHARACTER O 20 + (CHARWD R 0.277779) + (CHARHT R 0.430555) + ) +(CHARACTER O 21 + (CHARWD R 0.305557) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + ) +(CHARACTER O 22 + (CHARWD R 0.500002) + (CHARHT R 0.694445) + ) +(CHARACTER O 23 + (CHARWD R 0.500002) + (CHARHT R 0.694445) + ) +(CHARACTER O 24 + (CHARWD R 0.500002) + (CHARHT R 0.628473) + ) +(CHARACTER O 25 + (CHARWD R 0.500002) + (CHARHT R 0.694445) + ) +(CHARACTER O 26 + (CHARWD R 0.500002) + (CHARHT R 0.567777) + ) +(CHARACTER O 27 + (CHARWD R 0.750002) + (CHARHT R 0.694445) + ) +(CHARACTER O 30 + (CHARWD R 0.444446) + (CHARDP R 0.170138) + ) +(CHARACTER O 31 + (CHARWD R 0.500003) + (CHARHT R 0.694445) + ) +(CHARACTER O 32 + (CHARWD R 0.722224) + (CHARHT R 0.430555) + ) +(CHARACTER O 33 + (CHARWD R 0.777781) + (CHARHT R 0.430555) + ) +(CHARACTER O 34 + (CHARWD R 0.500002) + (CHARHT R 0.527779) + (CHARDP R 0.097223) + ) +(CHARACTER O 35 + (CHARWD R 0.902781) + (CHARHT R 0.683332) + ) +(CHARACTER O 36 + (CHARWD R 1.013891) + (CHARHT R 0.683332) + ) +(CHARACTER O 37 + (CHARWD R 0.777781) + (CHARHT R 0.731944) + (CHARDP R 0.048612) + ) +(CHARACTER O 40 + (CHARWD R 0.277779) + (CHARHT R 0.430555) + (COMMENT + (KRN C l R -0.277779) + (KRN C L R -0.319446) + ) + ) +(CHARACTER O 41 + (CHARWD R 0.277779) + (CHARHT R 0.694445) + (COMMENT + (LIG O 140 O 16) + ) + ) +(CHARACTER O 42 + (CHARWD R 0.500002) + (CHARHT R 0.694445) + ) +(CHARACTER O 43 + (CHARWD R 0.277779) + (CHARHT R 0.61508) + (COMMENT + (KRN C A R -0.111112) + (KRN O 244 R -0.111112) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + ) + ) +(CHARACTER O 44 + (CHARWD R 0.500002) + (CHARHT R 0.75) + (CHARDP R 0.055555) + ) +(CHARACTER O 45 + (CHARWD R 0.833336) + (CHARHT R 0.75) + (CHARDP R 0.055555) + ) +(CHARACTER O 46 + (CHARWD R 0.777781) + (CHARHT R 0.694445) + ) +(CHARACTER O 47 + (CHARWD R 0.277779) + (CHARHT R 0.694445) + (COMMENT + (LIG O 47 O 42) + (KRN O 77 R 0.111112) + (KRN O 41 R 0.111112) + ) + ) +(CHARACTER O 50 + (CHARWD R 0.38889) + (CHARHT R 0.75) + (CHARDP R 0.25) + ) +(CHARACTER O 51 + (CHARWD R 0.38889) + (CHARHT R 0.75) + (CHARDP R 0.25) + ) +(CHARACTER O 52 + (CHARWD R 0.500002) + (CHARHT R 0.75) + ) +(CHARACTER O 53 + (CHARWD R 0.777781) + (CHARHT R 0.583334) + (CHARDP R 0.083334) + ) +(CHARACTER O 54 + (CHARWD R 0.277779) + (CHARHT R 0.105556) + (CHARDP R 0.194445) + ) +(CHARACTER O 55 + (CHARWD R 0.333334) + (CHARHT R 0.430555) + (COMMENT + (LIG O 55 O 173) + ) + ) +(CHARACTER O 56 + (CHARWD R 0.277779) + (CHARHT R 0.105556) + (COMMENT + (LIG O 56 O 375) + ) + ) +(CHARACTER O 57 + (CHARWD R 0.500002) + (CHARHT R 0.75) + (CHARDP R 0.25) + ) +(CHARACTER C 0 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 1 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 2 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 3 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 4 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 5 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 6 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 7 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 8 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER C 9 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + ) +(CHARACTER O 72 + (CHARWD R 0.277779) + (CHARHT R 0.430555) + ) +(CHARACTER O 73 + (CHARWD R 0.277779) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + ) +(CHARACTER O 75 + (CHARWD R 0.777781) + (CHARHT R 0.366875) + (CHARDP R -0.133125) + ) +(CHARACTER O 77 + (CHARWD R 0.472224) + (CHARHT R 0.694445) + (COMMENT + (LIG O 140 O 17) + ) + ) +(CHARACTER O 100 + (CHARWD R 0.277779) + (CHARHT R 0.61508) + (COMMENT + (KRN C A R -0.111112) + (KRN O 244 R -0.111112) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + ) + ) +(CHARACTER C A + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (COMMENT + (LIG O 75 O 244) + (KRN C t R -0.027779) + (KRN O 227 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C U R -0.027779) + (KRN O 210 R -0.027779) + (KRN O 246 R -0.027779) + (KRN C Q R -0.027779) + (KRN C T R -0.083334) + (KRN O 207 R -0.083334) + (KRN C Y R -0.083334) + (KRN C V R -0.111112) + (KRN C W R -0.111112) + ) + ) +(CHARACTER C B + (CHARWD R 0.708336) + (CHARHT R 0.683332) + ) +(CHARACTER C C + (CHARWD R 0.722224) + (CHARHT R 0.683332) + (COMMENT + (LIG O 72 O 213) + ) + ) +(CHARACTER C D + (CHARWD R 0.763891) + (CHARHT R 0.683332) + (COMMENT + (LIG O 75 O 214) + (LIG O 41 O 200) + (KRN C X R -0.027779) + (KRN C W R -0.027779) + (KRN C A R -0.027779) + (KRN O 244 R -0.027779) + (KRN C V R -0.027779) + (KRN C Y R -0.027779) + ) + ) +(CHARACTER C E + (CHARWD R 0.680557) + (CHARHT R 0.683332) + ) +(CHARACTER C F + (CHARWD R 0.652781) + (CHARHT R 0.683332) + (COMMENT + (KRN C o R -0.083334) + (KRN O 240 R -0.083334) + (KRN O 225 R -0.083334) + (KRN C e R -0.083334) + (KRN C u R -0.083334) + (KRN O 230 R -0.083334) + (KRN O 276 R -0.027779) + (KRN C r R -0.083334) + (KRN C a R -0.083334) + (KRN O 274 R -0.083334) + (KRN C A R -0.111112) + (KRN O 244 R -0.111112) + (LIG O 41 O 204) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C Q R -0.027779) + ) + ) +(CHARACTER C G + (CHARWD R 0.784724) + (CHARHT R 0.683332) + (COMMENT + (LIG O 72 O 201) + (LIG O 75 O 215) + ) + ) +(CHARACTER C H + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (COMMENT + (LIG O 75 O 216) + (LIG O 41 O 202) + ) + ) +(CHARACTER C I + (CHARWD R 0.361112) + (CHARHT R 0.683332) + (COMMENT + (LIG O 72 O 203) + (LIG O 75 O 245) + (KRN C I R 0.027779) + ) + ) +(CHARACTER C J + (CHARWD R 0.51389) + (CHARHT R 0.683332) + ) +(CHARACTER C K + (CHARWD R 0.777781) + (CHARHT R 0.683332) + (COMMENT + (LIG O 41 O 204) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C Q R -0.027779) + ) + ) +(CHARACTER C L + (CHARWD R 0.625002) + (CHARHT R 0.683332) + (COMMENT + (KRN C T R -0.083334) + (KRN O 207 R -0.083334) + (KRN C Y R -0.083334) + (KRN C V R -0.111112) + (KRN C W R -0.111112) + ) + ) +(CHARACTER C M + (CHARWD R 0.916669) + (CHARHT R 0.683332) + ) +(CHARACTER C N + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (COMMENT + (LIG O 75 O 217) + ) + ) +(CHARACTER C O + (CHARWD R 0.777781) + (CHARHT R 0.683332) + (COMMENT + (LIG O 72 O 205) + (KRN C X R -0.027779) + (KRN C W R -0.027779) + (KRN C A R -0.027779) + (KRN O 244 R -0.027779) + (KRN C V R -0.027779) + (KRN C Y R -0.027779) + ) + ) +(CHARACTER C P + (CHARWD R 0.680557) + (CHARHT R 0.683332) + (COMMENT + (KRN C A R -0.083334) + (KRN O 244 R -0.083334) + (KRN C o R -0.027779) + (KRN O 240 R -0.027779) + (KRN O 225 R -0.027779) + (KRN C e R -0.027779) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (KRN O 56 R -0.083334) + (KRN O 54 R -0.083334) + ) + ) +(CHARACTER C Q + (CHARWD R 0.777781) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + ) +(CHARACTER C R + (CHARWD R 0.736113) + (CHARHT R 0.683332) + (COMMENT + (KRN C t R -0.027779) + (KRN O 227 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C U R -0.027779) + (KRN O 210 R -0.027779) + (KRN O 246 R -0.027779) + (KRN C Q R -0.027779) + (KRN C T R -0.083334) + (KRN O 207 R -0.083334) + (KRN C Y R -0.083334) + (KRN C V R -0.111112) + (KRN C W R -0.111112) + ) + ) +(CHARACTER C S + (CHARWD R 0.555557) + (CHARHT R 0.683332) + (COMMENT + (LIG O 72 O 252) + (LIG O 75 O 336) + (LIG O 41 O 206) + ) + ) +(CHARACTER C T + (CHARWD R 0.722224) + (CHARHT R 0.683332) + (COMMENT + (LIG O 41 O 207) + (KRN C y R -0.027779) + (KRN C e R -0.083334) + (KRN C o R -0.083334) + (KRN O 240 R -0.083334) + (KRN O 225 R -0.083334) + (KRN C r R -0.083334) + (KRN C a R -0.083334) + (KRN O 274 R -0.083334) + (KRN C A R -0.083334) + (KRN O 244 R -0.083334) + (KRN C u R -0.083334) + (KRN O 230 R -0.083334) + (KRN O 276 R -0.083334) + ) + ) +(CHARACTER C U + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (COMMENT + (LIG O 72 O 210) + (LIG O 75 O 246) + ) + ) +(CHARACTER C V + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (CHARIC R 0.013888) + (COMMENT + (KRN C o R -0.083334) + (KRN O 240 R -0.083334) + (KRN O 225 R -0.083334) + (KRN C e R -0.083334) + (KRN C u R -0.083334) + (KRN O 230 R -0.083334) + (KRN O 276 R -0.027779) + (KRN C r R -0.083334) + (KRN C a R -0.083334) + (KRN O 274 R -0.083334) + (KRN C A R -0.111112) + (KRN O 244 R -0.111112) + (LIG O 41 O 204) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C Q R -0.027779) + ) + ) +(CHARACTER C W + (CHARWD R 1.027781) + (CHARHT R 0.683332) + (CHARIC R 0.013888) + (COMMENT + (KRN C o R -0.083334) + (KRN O 240 R -0.083334) + (KRN O 225 R -0.083334) + (KRN C e R -0.083334) + (KRN C u R -0.083334) + (KRN O 230 R -0.083334) + (KRN O 276 R -0.027779) + (KRN C r R -0.083334) + (KRN C a R -0.083334) + (KRN O 274 R -0.083334) + (KRN C A R -0.111112) + (KRN O 244 R -0.111112) + (LIG O 41 O 204) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C Q R -0.027779) + ) + ) +(CHARACTER C X + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (COMMENT + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C Q R -0.027779) + ) + ) +(CHARACTER C Y + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (CHARIC R 0.025) + (COMMENT + (KRN C e R -0.083334) + (KRN C o R -0.083334) + (KRN O 240 R -0.083334) + (KRN O 225 R -0.083334) + (KRN C r R -0.083334) + (KRN C a R -0.083334) + (KRN O 274 R -0.083334) + (KRN C A R -0.083334) + (KRN O 244 R -0.083334) + (KRN C u R -0.083334) + (KRN O 230 R -0.083334) + (KRN O 276 R -0.083334) + ) + ) +(CHARACTER C Z + (CHARWD R 0.611113) + (CHARHT R 0.683332) + (COMMENT + (LIG O 72 O 211) + (LIG O 75 O 337) + (LIG O 41 O 212) + ) + ) +(CHARACTER O 133 + (CHARWD R 0.277779) + (CHARHT R 0.75) + (CHARDP R 0.25) + ) +(CHARACTER O 134 + (CHARWD R 0.500002) + (CHARHT R 0.694445) + ) +(CHARACTER O 135 + (CHARWD R 0.277779) + (CHARHT R 0.75) + (CHARDP R 0.25) + ) +(CHARACTER O 136 + (CHARWD R 0.500002) + (CHARHT R 0.694445) + ) +(CHARACTER O 137 + (CHARWD R 0.277779) + (CHARHT R 0.667859) + ) +(CHARACTER O 140 + (CHARWD R 0.277779) + (CHARHT R 0.694445) + (COMMENT + (LIG O 140 O 134) + ) + ) +(CHARACTER C a + (CHARWD R 0.500002) + (CHARHT R 0.430555) + (COMMENT + (LIG O 75 O 274) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C b + (CHARWD R 0.555557) + (CHARHT R 0.694445) + (COMMENT + (KRN C e R 0.027779) + (KRN C o R 0.027779) + (KRN O 240 R 0.027779) + (KRN O 225 R 0.027779) + (KRN C x R -0.027779) + (KRN C d R 0.027779) + (KRN O 234 R 0.027779) + (KRN O 220 R 0.027779) + (KRN C c R 0.027779) + (KRN O 233 R 0.027779) + (KRN C q R 0.027779) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C c + (CHARWD R 0.444446) + (CHARHT R 0.430555) + (COMMENT + (LIG O 72 O 233) + (KRN C h R -0.027779) + (KRN O 222 R -0.027779) + (KRN O 236 R -0.027779) + (KRN C k R -0.027779) + (KRN O 224 R -0.027779) + ) + ) +(CHARACTER C d + (CHARWD R 0.555557) + (CHARHT R 0.694445) + (COMMENT + (LIG O 75 O 234) + (LIG O 41 O 220) + ) + ) +(CHARACTER C e + (CHARWD R 0.444446) + (CHARHT R 0.430555) + ) +(CHARACTER C f + (CHARWD R 0.305557) + (CHARHT R 0.694445) + (CHARIC R 0.077779) + (COMMENT + (KRN O 275 R 0.166667) + (KRN O 223 R 0.166667) + (KRN O 43 R 0.166667) + (KRN O 100 R 0.166667) + ) + ) +(CHARACTER C g + (CHARWD R 0.500002) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.013888) + (COMMENT + (LIG O 72 O 221) + (LIG O 75 O 235) + (KRN C j R 0.027779) + ) + ) +(CHARACTER C h + (CHARWD R 0.555557) + (CHARHT R 0.694445) + (COMMENT + (LIG O 75 O 236) + (LIG O 41 O 222) + (KRN C t R -0.027779) + (KRN O 227 R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C i + (CHARWD R 0.277779) + (CHARHT R 0.430555) + (COMMENT + (LIG O 72 O 223) + (LIG O 75 O 275) + ) + ) +(CHARACTER C j + (CHARWD R 0.305557) + (CHARHT R 0.667859) + (CHARDP R 0.194445) + ) +(CHARACTER C k + (CHARWD R 0.527781) + (CHARHT R 0.694445) + (COMMENT + (LIG O 41 O 224) + (KRN C a R -0.055555) + (KRN O 274 R -0.055555) + (KRN C e R -0.027779) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (KRN C c R -0.027779) + (KRN O 233 R -0.027779) + (KRN C o R -0.027779) + (KRN O 225 R -0.027779) + (KRN O 240 R -0.027779) + ) + ) +(CHARACTER C l + (CHARWD R 0.277779) + (CHARHT R 0.694445) + ) +(CHARACTER C m + (CHARWD R 0.833336) + (CHARHT R 0.430555) + (COMMENT + (KRN C t R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN O 276 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C n + (CHARWD R 0.555557) + (CHARHT R 0.430555) + (COMMENT + (LIG O 75 O 237) + (KRN C t R -0.027779) + (KRN O 227 R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN O 276 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C o + (CHARWD R 0.500002) + (CHARHT R 0.430555) + (COMMENT + (LIG O 72 O 225) + (LIG O 75 O 240) + (KRN C e R 0.027779) + (KRN C o R 0.027779) + (KRN O 240 R 0.027779) + (KRN O 225 R 0.027779) + (KRN C x R -0.027779) + (KRN C d R 0.027779) + (KRN O 234 R 0.027779) + (KRN O 220 R 0.027779) + (KRN C c R 0.027779) + (KRN O 233 R 0.027779) + (KRN C q R 0.027779) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C p + (CHARWD R 0.555557) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (COMMENT + (KRN C e R 0.027779) + (KRN C o R 0.027779) + (KRN O 240 R 0.027779) + (KRN O 225 R 0.027779) + (KRN C x R -0.027779) + (KRN C d R 0.027779) + (KRN O 234 R 0.027779) + (KRN O 220 R 0.027779) + (KRN C c R 0.027779) + (KRN O 233 R 0.027779) + (KRN C q R 0.027779) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C q + (CHARWD R 0.527779) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + ) +(CHARACTER C r + (CHARWD R 0.391668) + (CHARHT R 0.430555) + ) +(CHARACTER C s + (CHARWD R 0.394445) + (CHARHT R 0.430555) + (COMMENT + (LIG O 72 O 253) + (LIG O 75 O 376) + (LIG O 41 O 226) + ) + ) +(CHARACTER C t + (CHARWD R 0.38889) + (CHARHT R 0.61508) + (COMMENT + (LIG O 41 O 227) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C u + (CHARWD R 0.555557) + (CHARHT R 0.430555) + (COMMENT + (LIG O 72 O 230) + (LIG O 75 O 276) + (KRN C w R -0.027779) + ) + ) +(CHARACTER C v + (CHARWD R 0.527781) + (CHARHT R 0.430555) + (CHARIC R 0.013888) + (COMMENT + (KRN C a R -0.055555) + (KRN O 274 R -0.055555) + (KRN C e R -0.027779) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (KRN C c R -0.027779) + (KRN O 233 R -0.027779) + (KRN C o R -0.027779) + (KRN O 225 R -0.027779) + (KRN O 240 R -0.027779) + ) + ) +(CHARACTER C w + (CHARWD R 0.722224) + (CHARHT R 0.430555) + (CHARIC R 0.013888) + (COMMENT + (KRN C e R -0.027779) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (KRN C c R -0.027779) + (KRN O 233 R -0.027779) + (KRN C o R -0.027779) + (KRN O 225 R -0.027779) + (KRN O 240 R -0.027779) + ) + ) +(CHARACTER C x + (CHARWD R 0.527781) + (CHARHT R 0.430555) + ) +(CHARACTER C y + (CHARWD R 0.527781) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.013888) + (COMMENT + (KRN C o R -0.027779) + (KRN O 240 R -0.027779) + (KRN O 225 R -0.027779) + (KRN C e R -0.027779) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (KRN O 56 R -0.083334) + (KRN O 54 R -0.083334) + ) + ) +(CHARACTER C z + (CHARWD R 0.444446) + (CHARHT R 0.430555) + (COMMENT + (LIG O 72 O 231) + (LIG O 75 O 377) + (LIG O 41 O 232) + ) + ) +(CHARACTER O 173 + (CHARWD R 0.500002) + (CHARHT R 0.430555) + (CHARIC R 0.027779) + (COMMENT + (LIG O 55 O 174) + ) + ) +(CHARACTER O 174 + (CHARWD R 1.000003) + (CHARHT R 0.430555) + (CHARIC R 0.027779) + ) +(CHARACTER O 175 + (CHARWD R 0.500002) + (CHARHT R 0.694445) + ) +(CHARACTER O 176 + (CHARWD R 0.500002) + (CHARHT R 0.667859) + ) +(CHARACTER O 177 + (CHARWD R 0.500002) + (CHARHT R 0.667859) + ) +(CHARACTER O 200 + (CHARWD R 0.763891) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (COMMENT + (KRN C X R -0.027779) + (KRN C W R -0.027779) + (KRN C A R -0.027779) + (KRN O 244 R -0.027779) + (KRN C V R -0.027779) + (KRN C Y R -0.027779) + ) + ) +(CHARACTER O 201 + (CHARWD R 0.784724) + (CHARHT R 0.75) + ) +(CHARACTER O 202 + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + ) +(CHARACTER O 203 + (CHARWD R 0.361112) + (CHARHT R 0.75) + ) +(CHARACTER O 204 + (CHARWD R 0.777781) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (COMMENT + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C Q R -0.027779) + ) + ) +(CHARACTER O 205 + (CHARWD R 0.777781) + (CHARHT R 0.75) + (COMMENT + (KRN C X R -0.027779) + (KRN C W R -0.027779) + (KRN C A R -0.027779) + (KRN O 244 R -0.027779) + (KRN C V R -0.027779) + (KRN C Y R -0.027779) + ) + ) +(CHARACTER O 206 + (CHARWD R 0.555557) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + ) +(CHARACTER O 207 + (CHARWD R 0.722224) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (COMMENT + (KRN C y R -0.027779) + (KRN C e R -0.083334) + (KRN C o R -0.083334) + (KRN O 240 R -0.083334) + (KRN O 225 R -0.083334) + (KRN C r R -0.083334) + (KRN C a R -0.083334) + (KRN O 274 R -0.083334) + (KRN C A R -0.083334) + (KRN O 244 R -0.083334) + (KRN C u R -0.083334) + (KRN O 230 R -0.083334) + (KRN O 276 R -0.083334) + ) + ) +(CHARACTER O 210 + (CHARWD R 0.750002) + (CHARHT R 0.75) + ) +(CHARACTER O 211 + (CHARWD R 0.611113) + (CHARHT R 0.75) + ) +(CHARACTER O 212 + (CHARWD R 0.611113) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + ) +(CHARACTER O 213 + (CHARWD R 0.722224) + (CHARHT R 0.683332) + (CHARDP R 0.170138) + ) +(CHARACTER O 214 + (CHARWD R 0.763891) + (CHARHT R 0.683332) + (CHARDP R 0.116667) + (COMMENT + (KRN C X R -0.027779) + (KRN C W R -0.027779) + (KRN C A R -0.027779) + (KRN O 244 R -0.027779) + (KRN C V R -0.027779) + (KRN C Y R -0.027779) + ) + ) +(CHARACTER O 215 + (CHARWD R 0.784724) + (CHARHT R 0.75) + ) +(CHARACTER O 216 + (CHARWD R 0.750002) + (CHARHT R 0.683332) + (CHARDP R 0.116667) + ) +(CHARACTER O 217 + (CHARWD R 0.750002) + (CHARHT R 0.75) + ) +(CHARACTER O 220 + (CHARWD R 0.555557) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + ) +(CHARACTER O 221 + (CHARWD R 0.555557) + (CHARHT R 0.667859) + (CHARDP R 0.194445) + ) +(CHARACTER O 222 + (CHARWD R 0.555557) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + (COMMENT + (KRN C t R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN O 276 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 223 + (CHARWD R 0.277779) + (CHARHT R 0.667859) + ) +(CHARACTER O 224 + (CHARWD R 0.527781) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + (COMMENT + (KRN C a R -0.055555) + (KRN O 274 R -0.055555) + (KRN C e R -0.027779) + (KRN C a R -0.027779) + (KRN O 274 R -0.027779) + (KRN C c R -0.027779) + (KRN O 233 R -0.027779) + (KRN C o R -0.027779) + (KRN O 225 R -0.027779) + (KRN O 240 R -0.027779) + ) + ) +(CHARACTER O 225 + (CHARWD R 0.500002) + (CHARHT R 0.667859) + (COMMENT + (KRN C e R 0.027779) + (KRN C o R 0.027779) + (KRN O 240 R 0.027779) + (KRN O 225 R 0.027779) + (KRN C x R -0.027779) + (KRN C d R 0.027779) + (KRN O 234 R 0.027779) + (KRN O 220 R 0.027779) + (KRN C c R 0.027779) + (KRN O 233 R 0.027779) + (KRN C q R 0.027779) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 226 + (CHARWD R 0.394445) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + ) +(CHARACTER O 227 + (CHARWD R 0.38889) + (CHARHT R 0.61508) + (CHARDP R 0.194445) + (COMMENT + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 230 + (CHARWD R 0.555557) + (CHARHT R 0.667859) + (COMMENT + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 231 + (CHARWD R 0.444446) + (CHARHT R 0.667859) + ) +(CHARACTER O 232 + (CHARWD R 0.444446) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + ) +(CHARACTER O 233 + (CHARWD R 0.444446) + (CHARHT R 0.430555) + (CHARDP R 0.170138) + (COMMENT + (KRN C h R -0.027779) + (KRN O 222 R -0.027779) + (KRN O 236 R -0.027779) + (KRN C k R -0.027779) + (KRN O 224 R -0.027779) + ) + ) +(CHARACTER O 234 + (CHARWD R 0.555557) + (CHARHT R 0.694445) + (CHARDP R 0.116667) + ) +(CHARACTER O 235 + (CHARWD R 0.500002) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + (CHARIC R 0.013888) + ) +(CHARACTER O 236 + (CHARWD R 0.555557) + (CHARHT R 0.694445) + (CHARDP R 0.116667) + (COMMENT + (KRN C t R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN O 276 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 237 + (CHARWD R 0.555557) + (CHARHT R 0.643056) + (COMMENT + (KRN C t R -0.027779) + (KRN C u R -0.027779) + (KRN O 230 R -0.027779) + (KRN O 276 R -0.027779) + (KRN C b R -0.027779) + (KRN C y R -0.027779) + (KRN C v R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 240 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + (COMMENT + (KRN C e R 0.027779) + (KRN C o R 0.027779) + (KRN O 240 R 0.027779) + (KRN O 225 R 0.027779) + (KRN C x R -0.027779) + (KRN C d R 0.027779) + (KRN O 234 R 0.027779) + (KRN O 220 R 0.027779) + (KRN C c R 0.027779) + (KRN O 233 R 0.027779) + (KRN C q R 0.027779) + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 243 + (CHARWD R 0.833336) + (CHARHT R 0.694445) + (CHARDP R 0.194443) + ) +(CHARACTER O 244 + (CHARWD R 0.750002) + (CHARHT R 0.75) + (COMMENT + (KRN C t R -0.027779) + (KRN O 227 R -0.027779) + (KRN C C R -0.027779) + (KRN O 213 R -0.027779) + (KRN C O R -0.027779) + (KRN O 205 R -0.027779) + (KRN C G R -0.027779) + (KRN O 201 R -0.027779) + (KRN O 215 R -0.027779) + (KRN C U R -0.027779) + (KRN O 210 R -0.027779) + (KRN O 246 R -0.027779) + (KRN C Q R -0.027779) + (KRN C T R -0.083334) + (KRN O 207 R -0.083334) + (KRN C Y R -0.083334) + (KRN C V R -0.111112) + (KRN C W R -0.111112) + ) + ) +(CHARACTER O 245 + (CHARWD R 0.361112) + (CHARHT R 0.75) + (CHARIC R 0.027779) + ) +(CHARACTER O 246 + (CHARWD R 0.750002) + (CHARHT R 0.75) + ) +(CHARACTER O 252 + (CHARWD R 0.555557) + (CHARHT R 0.683332) + (CHARDP R 0.170138) + ) +(CHARACTER O 253 + (CHARWD R 0.394445) + (CHARHT R 0.430555) + (CHARDP R 0.170138) + ) +(CHARACTER O 274 + (CHARWD R 0.500002) + (CHARHT R 0.643056) + (COMMENT + (KRN C v R -0.027779) + (KRN C j R 0.055555) + (KRN C y R -0.027779) + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 275 + (CHARWD R 0.277779) + (CHARHT R 0.643056) + ) +(CHARACTER O 276 + (CHARWD R 0.555557) + (CHARHT R 0.643056) + (COMMENT + (KRN C w R -0.027779) + ) + ) +(CHARACTER O 300 + (CHARWD R 0.777781) + (CHARHT R 0.694445) + ) +(CHARACTER O 336 + (CHARWD R 0.555557) + (CHARHT R 0.683332) + (CHARDP R 0.116667) + ) +(CHARACTER O 337 + (CHARWD R 0.611113) + (CHARHT R 0.683332) + (CHARDP R 0.116667) + ) +(CHARACTER O 375 + (CHARWD R 0.250002) + (CHARHT R 0.430555) + ) +(CHARACTER O 376 + (CHARWD R 0.394445) + (CHARHT R 0.430555) + (CHARDP R 0.116667) + ) +(CHARACTER O 377 + (CHARWD R 0.444446) + (CHARHT R 0.430555) + (CHARDP R 0.116667) + ) diff --git a/language/turkish/misc/wtkti10.pl b/language/turkish/misc/wtkti10.pl new file mode 100644 index 0000000000..2726710a74 --- /dev/null +++ b/language/turkish/misc/wtkti10.pl @@ -0,0 +1,1847 @@ +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM O 16270460061) +(FONTDIMEN + (SLANT R 0.25) + (SPACE R 0.357776) + (STRETCH R 0.153333) + (SHRINK R 0.1022215) + (XHEIGHT R 0.430555) + (QUAD R 1.022217) + (EXTRASPACE R 0.1022215) + ) +(LIGTABLE + (LABEL O 140) + (LIG O 140 O 134) + (STOP) + (LABEL O 47) + (LIG O 47 O 42) + (KRN O 77 R 0.1022215) + (KRN O 41 R 0.1022215) + (STOP) + (LABEL O 55) + (LIG O 55 O 173) + (STOP) + (LABEL O 173) + (LIG O 55 O 174) + (STOP) + (LABEL O 40) + (KRN C l R -0.255554) + (KRN C L R -0.320554) + (STOP) + (LABEL O 41) + (LIG O 140 O 16) + (STOP) + (LABEL O 77) + (LIG O 140 O 17) + (STOP) + (LABEL C C) + (LIG O 72 O 213) + (STOP) + (LABEL C G) + (LIG O 72 O 201) + (LIG O 75 O 215) + (STOP) + (LABEL C H) + (LIG O 75 O 216) + (LIG O 41 O 202) + (STOP) + (LABEL C I) + (LIG O 72 O 203) + (LIG O 75 O 245) + (STOP) + (LABEL C N) + (LIG O 75 O 217) + (STOP) + (LABEL C S) + (LIG O 72 O 252) + (LIG O 75 O 336) + (LIG O 41 O 206) + (STOP) + (LABEL C U) + (LIG O 72 O 210) + (LIG O 75 O 246) + (STOP) + (LABEL C Z) + (LIG O 72 O 211) + (LIG O 75 O 337) + (LIG O 41 O 212) + (STOP) + (LABEL C a) + (LIG O 75 O 274) + (STOP) + (LABEL C g) + (LIG O 72 O 221) + (LIG O 75 O 235) + (STOP) + (LABEL C h) + (LIG O 75 O 236) + (LIG O 41 O 222) + (STOP) + (LABEL C i) + (LIG O 72 O 223) + (LIG O 75 O 275) + (STOP) + (LABEL C s) + (LIG O 72 O 253) + (LIG O 75 O 376) + (LIG O 41 O 226) + (STOP) + (LABEL C t) + (LIG O 41 O 227) + (STOP) + (LABEL C u) + (LIG O 72 O 230) + (LIG O 75 O 276) + (STOP) + (LABEL C z) + (LIG O 72 O 231) + (LIG O 75 O 377) + (LIG O 41 O 232) + (STOP) + (LABEL C F) + (LABEL C V) + (KRN C o R -0.076666) + (KRN O 225 R -0.076666) + (KRN O 240 R -0.076666) + (KRN C e R -0.076666) + (KRN C u R -0.076666) + (KRN O 230 R -0.076666) + (KRN O 276 R -0.076666) + (KRN C r R -0.076666) + (KRN C a R -0.076666) + (KRN O 274 R -0.076666) + (KRN C A R -0.1022215) + (KRN O 244 R -0.1022215) + (LABEL C K) + (LIG O 41 O 204) + (LABEL C X) + (LABEL O 204) + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C Q R -0.025556) + (STOP) + (LABEL C T) + (LIG O 41 O 207) + (LABEL O 207) + (KRN C y R -0.076666) + (LABEL C Y) + (KRN C e R -0.076666) + (KRN C o R -0.076666) + (KRN O 225 R -0.076666) + (KRN O 240 R -0.076666) + (KRN C r R -0.076666) + (KRN C a R -0.076666) + (KRN O 274 R -0.076666) + (KRN C u R -0.076666) + (KRN O 230 R -0.076666) + (KRN O 276 R -0.076666) + (LABEL C P) + (LABEL C W) + (KRN C A R -0.076666) + (KRN O 244 R -0.076666) + (STOP) + (LABEL C D) + (LIG O 75 O 214) + (LIG O 41 O 200) + (LABEL O 200) + (LABEL O 214) + (KRN C X R -0.025556) + (KRN C W R -0.025556) + (KRN C A R -0.025556) + (KRN O 244 R -0.025556) + (KRN C V R -0.025556) + (KRN C Y R -0.025556) + (STOP) + (LABEL C O) + (LIG O 72 O 205) + (LABEL O 205) + (KRN C X R -0.025556) + (KRN C W R -0.025556) + (KRN C A R -0.025556) + (KRN O 244 R -0.025556) + (KRN C V R -0.025556) + (KRN C Y R -0.025556) + (STOP) + (LABEL C A) + (LIG O 75 O 244) + (LABEL C R) + (LABEL O 244) + (KRN C n R -0.025556) + (KRN O 237 R -0.025556) + (KRN C l R -0.025556) + (KRN C r R -0.025556) + (KRN C u R -0.025556) + (KRN O 230 R -0.025556) + (KRN O 276 R -0.025556) + (KRN C m R -0.025556) + (KRN C t R -0.025556) + (KRN O 227 R -0.025556) + (KRN C i R -0.025556) + (KRN O 223 R -0.025556) + (KRN O 275 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C h R -0.025556) + (KRN O 236 R -0.025556) + (KRN O 222 R -0.025556) + (KRN C b R -0.025556) + (KRN C U R -0.025556) + (KRN O 210 R -0.025556) + (KRN O 246 R -0.025556) + (KRN C k R -0.025556) + (KRN O 224 R -0.025556) + (KRN C v R -0.025556) + (KRN C w R -0.025556) + (KRN C Q R -0.025556) + (LABEL C L) + (KRN C T R -0.076666) + (KRN O 207 R -0.076666) + (KRN C Y R -0.076666) + (KRN C V R -0.1022215) + (KRN C W R -0.1022215) + (LABEL C b) + (LABEL C e) + (LABEL C p) + (LABEL C r) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + (STOP) + (LABEL C c) + (LIG O 72 O 233) + (LABEL O 233) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + (STOP) + (LABEL C d) + (LIG O 75 O 234) + (LIG O 41 O 220) + (LABEL C l) + (LABEL C w) + (LABEL O 220) + (LABEL O 234) + (KRN C l R 0.051111) + (STOP) + (LABEL C o) + (LIG O 72 O 225) + (LIG O 75 O 240) + (LABEL O 225) + (LABEL O 240) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + (STOP) + (LABEL C n) + (LIG O 75 O 237) + (KRN O 47 R -0.1022215) + (LABEL O 237) + (KRN O 47 R -0.076666) + (STOP) + (LABEL O 43) + (LABEL O 100) + (KRN C A R -0.1022215) + (KRN O 244 R -0.1022215) + (KRN C a R -0.025556) + (KRN O 274 R -0.025556) + (STOP) + (LABEL O 56) + (LIG O 56 O 375) + (STOP) + (LABEL C f) + (KRN O 275 R 0.153333) + (KRN O 223 R 0.153333) + (KRN O 43 R 0.153333) + (KRN O 100 R 0.153333) + (STOP) + ) +(CHARACTER O 0 + (CHARWD R 0.627218) + (CHARHT R 0.683332) + (CHARIC R 0.133055) + ) +(CHARACTER O 1 + (CHARWD R 0.817774) + (CHARHT R 0.683332) + ) +(CHARACTER O 2 + (CHARWD R 0.766663) + (CHARHT R 0.683332) + (CHARIC R 0.0940275) + ) +(CHARACTER O 3 + (CHARWD R 0.692218) + (CHARHT R 0.683332) + ) +(CHARACTER O 4 + (CHARWD R 0.664441) + (CHARHT R 0.683332) + (CHARIC R 0.152944) + ) +(CHARACTER O 5 + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARIC R 0.16389) + ) +(CHARACTER O 6 + (CHARWD R 0.715551) + (CHARHT R 0.683332) + (CHARIC R 0.120346) + ) +(CHARACTER O 7 + (CHARWD R 0.766663) + (CHARHT R 0.683332) + (CHARIC R 0.111112) + ) +(CHARACTER O 10 + (CHARWD R 0.715551) + (CHARHT R 0.683332) + (CHARIC R 0.059862) + ) +(CHARACTER O 11 + (CHARWD R 0.766663) + (CHARHT R 0.683332) + (CHARIC R 0.111112) + ) +(CHARACTER O 12 + (CHARWD R 0.715551) + (CHARHT R 0.683332) + (CHARIC R 0.102419) + ) +(CHARACTER O 16 + (CHARWD R 0.306665) + (CHARHT R 0.5) + (CHARDP R 0.194445) + (CHARIC R 0.075557) + ) +(CHARACTER O 17 + (CHARWD R 0.485553) + (CHARHT R 0.5) + (CHARDP R 0.194445) + ) +(CHARACTER O 20 + (CHARWD R 0.306665) + (CHARHT R 0.430555) + (CHARIC R 0.037361) + ) +(CHARACTER O 21 + (CHARWD R 0.33222) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.037361) + ) +(CHARACTER O 22 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + ) +(CHARACTER O 23 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARIC R 0.096945) + ) +(CHARACTER O 24 + (CHARWD R 0.511108) + (CHARHT R 0.628473) + (CHARIC R 0.0829525) + ) +(CHARACTER O 25 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARIC R 0.108057) + ) +(CHARACTER O 26 + (CHARWD R 0.511108) + (CHARHT R 0.561666) + (CHARIC R 0.103334) + ) +(CHARACTER O 27 + (CHARWD R 0.831291) + (CHARHT R 0.694445) + ) +(CHARACTER O 30 + (CHARWD R 0.459997) + (CHARDP R 0.170138) + ) +(CHARACTER O 31 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARIC R 0.1225) + ) +(CHARACTER O 32 + (CHARWD R 0.715551) + (CHARHT R 0.430555) + (CHARIC R 0.084028) + ) +(CHARACTER O 33 + (CHARWD R 0.766663) + (CHARHT R 0.430555) + (CHARIC R 0.084028) + ) +(CHARACTER O 34 + (CHARWD R 0.511108) + (CHARHT R 0.527779) + (CHARDP R 0.097223) + (CHARIC R 0.053612) + ) +(CHARACTER O 35 + (CHARWD R 0.882772) + (CHARHT R 0.683332) + (CHARIC R 0.120346) + ) +(CHARACTER O 36 + (CHARWD R 0.984995) + (CHARHT R 0.683332) + (CHARIC R 0.120346) + ) +(CHARACTER O 37 + (CHARWD R 0.766663) + (CHARHT R 0.731944) + (CHARDP R 0.048612) + (CHARIC R 0.0940275) + ) +(CHARACTER O 40 + (CHARWD R 0.255554) + (CHARHT R 0.430555) + (COMMENT + (KRN C l R -0.255554) + (KRN C L R -0.320554) + ) + ) +(CHARACTER O 41 + (CHARWD R 0.306665) + (CHARHT R 0.694445) + (CHARIC R 0.124168) + (COMMENT + (LIG O 140 O 16) + ) + ) +(CHARACTER O 42 + (CHARWD R 0.514442) + (CHARHT R 0.694445) + (CHARIC R 0.0696125) + ) +(CHARACTER O 43 + (CHARWD R 0.306665) + (CHARHT R 0.61508) + (CHARIC R 0.124168) + (COMMENT + (KRN C A R -0.1022215) + (KRN O 244 R -0.1022215) + (KRN C a R -0.025556) + (KRN O 274 R -0.025556) + ) + ) +(CHARACTER O 44 + (CHARWD R 0.511108) + (CHARHT R 0.75) + (CHARDP R 0.055555) + (CHARIC R 0.135556) + ) +(CHARACTER O 45 + (CHARWD R 0.817774) + (CHARHT R 0.75) + (CHARDP R 0.055555) + (CHARIC R 0.136389) + ) +(CHARACTER O 46 + (CHARWD R 0.766663) + (CHARHT R 0.694445) + (CHARIC R 0.087209) + ) +(CHARACTER O 47 + (CHARWD R 0.306665) + (CHARHT R 0.694445) + (CHARIC R 0.124168) + (COMMENT + (LIG O 47 O 42) + (KRN O 77 R 0.1022215) + (KRN O 41 R 0.1022215) + ) + ) +(CHARACTER O 50 + (CHARWD R 0.408887) + (CHARHT R 0.75) + (CHARDP R 0.25) + (CHARIC R 0.161944) + ) +(CHARACTER O 51 + (CHARWD R 0.408887) + (CHARHT R 0.75) + (CHARDP R 0.25) + (CHARIC R 0.036944) + ) +(CHARACTER O 52 + (CHARWD R 0.511108) + (CHARHT R 0.75) + (CHARIC R 0.149167) + ) +(CHARACTER O 53 + (CHARWD R 0.766663) + (CHARHT R 0.561666) + (CHARDP R 0.056665) + (CHARIC R 0.036944) + ) +(CHARACTER O 54 + (CHARWD R 0.306665) + (CHARHT R 0.105556) + (CHARDP R 0.194445) + ) +(CHARACTER O 55 + (CHARWD R 0.357776) + (CHARHT R 0.430555) + (CHARIC R 0.028264) + (COMMENT + (LIG O 55 O 173) + ) + ) +(CHARACTER O 56 + (CHARWD R 0.306665) + (CHARHT R 0.105556) + (COMMENT + (LIG O 56 O 375) + ) + ) +(CHARACTER O 57 + (CHARWD R 0.511108) + (CHARHT R 0.75) + (CHARDP R 0.25) + (CHARIC R 0.161944) + ) +(CHARACTER C 0 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.135556) + ) +(CHARACTER C 1 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.135556) + ) +(CHARACTER C 2 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.135556) + ) +(CHARACTER C 3 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.135556) + ) +(CHARACTER C 4 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARDP R 0.194445) + (CHARIC R 0.135556) + ) +(CHARACTER C 5 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.135556) + ) +(CHARACTER C 6 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.135556) + ) +(CHARACTER C 7 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARDP R 0.194445) + (CHARIC R 0.135556) + ) +(CHARACTER C 8 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.135556) + ) +(CHARACTER C 9 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.135556) + ) +(CHARACTER O 72 + (CHARWD R 0.306665) + (CHARHT R 0.430555) + (CHARIC R 0.058195) + ) +(CHARACTER O 73 + (CHARWD R 0.306665) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.058195) + ) +(CHARACTER O 75 + (CHARWD R 0.766663) + (CHARHT R 0.366875) + (CHARDP R -0.133125) + (CHARIC R 0.066312) + ) +(CHARACTER O 77 + (CHARWD R 0.485553) + (CHARHT R 0.694445) + (CHARIC R 0.13889) + (COMMENT + (LIG O 140 O 17) + ) + ) +(CHARACTER O 100 + (CHARWD R 0.306665) + (CHARHT R 0.61508) + (CHARIC R 0.124168) + (COMMENT + (KRN C A R -0.1022215) + (KRN O 244 R -0.1022215) + (KRN C a R -0.025556) + (KRN O 274 R -0.025556) + ) + ) +(CHARACTER C A + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (COMMENT + (LIG O 75 O 244) + (KRN C n R -0.025556) + (KRN O 237 R -0.025556) + (KRN C l R -0.025556) + (KRN C r R -0.025556) + (KRN C u R -0.025556) + (KRN O 230 R -0.025556) + (KRN O 276 R -0.025556) + (KRN C m R -0.025556) + (KRN C t R -0.025556) + (KRN O 227 R -0.025556) + (KRN C i R -0.025556) + (KRN O 223 R -0.025556) + (KRN O 275 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C h R -0.025556) + (KRN O 236 R -0.025556) + (KRN O 222 R -0.025556) + (KRN C b R -0.025556) + (KRN C U R -0.025556) + (KRN O 210 R -0.025556) + (KRN O 246 R -0.025556) + (KRN C k R -0.025556) + (KRN O 224 R -0.025556) + (KRN C v R -0.025556) + (KRN C w R -0.025556) + (KRN C Q R -0.025556) + (KRN C T R -0.076666) + (KRN O 207 R -0.076666) + (KRN C Y R -0.076666) + (KRN C V R -0.1022215) + (KRN C W R -0.1022215) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C B + (CHARWD R 0.703885) + (CHARHT R 0.683332) + (CHARIC R 0.102419) + ) +(CHARACTER C C + (CHARWD R 0.715551) + (CHARHT R 0.683332) + (CHARIC R 0.145277) + (COMMENT + (LIG O 72 O 213) + ) + ) +(CHARACTER C D + (CHARWD R 0.754995) + (CHARHT R 0.683332) + (CHARIC R 0.0940275) + (COMMENT + (LIG O 75 O 214) + (LIG O 41 O 200) + (KRN C X R -0.025556) + (KRN C W R -0.025556) + (KRN C A R -0.025556) + (KRN O 244 R -0.025556) + (KRN C V R -0.025556) + (KRN C Y R -0.025556) + ) + ) +(CHARACTER C E + (CHARWD R 0.678329) + (CHARHT R 0.683332) + (CHARIC R 0.120346) + ) +(CHARACTER C F + (CHARWD R 0.652774) + (CHARHT R 0.683332) + (CHARIC R 0.133055) + (COMMENT + (KRN C o R -0.076666) + (KRN O 225 R -0.076666) + (KRN O 240 R -0.076666) + (KRN C e R -0.076666) + (KRN C u R -0.076666) + (KRN O 230 R -0.076666) + (KRN O 276 R -0.076666) + (KRN C r R -0.076666) + (KRN C a R -0.076666) + (KRN O 274 R -0.076666) + (KRN C A R -0.1022215) + (KRN O 244 R -0.1022215) + (LIG O 41 O 204) + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C Q R -0.025556) + ) + ) +(CHARACTER C G + (CHARWD R 0.773607) + (CHARHT R 0.683332) + (CHARIC R 0.087209) + (COMMENT + (LIG O 72 O 201) + (LIG O 75 O 215) + ) + ) +(CHARACTER C H + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARIC R 0.16389) + (COMMENT + (LIG O 75 O 216) + (LIG O 41 O 202) + ) + ) +(CHARACTER C I + (CHARWD R 0.385553) + (CHARHT R 0.683332) + (CHARIC R 0.158055) + (COMMENT + (LIG O 72 O 203) + (LIG O 75 O 245) + ) + ) +(CHARACTER C J + (CHARWD R 0.524997) + (CHARHT R 0.683332) + (CHARIC R 0.140279) + ) +(CHARACTER C K + (CHARWD R 0.768885) + (CHARHT R 0.683332) + (CHARIC R 0.145277) + (COMMENT + (LIG O 41 O 204) + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C Q R -0.025556) + ) + ) +(CHARACTER C L + (CHARWD R 0.627218) + (CHARHT R 0.683332) + (COMMENT + (KRN C T R -0.076666) + (KRN O 207 R -0.076666) + (KRN C Y R -0.076666) + (KRN C V R -0.1022215) + (KRN C W R -0.1022215) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C M + (CHARWD R 0.896662) + (CHARHT R 0.683332) + (CHARIC R 0.16389) + ) +(CHARACTER C N + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARIC R 0.16389) + (COMMENT + (LIG O 75 O 217) + ) + ) +(CHARACTER C O + (CHARWD R 0.766663) + (CHARHT R 0.683332) + (CHARIC R 0.0940275) + (COMMENT + (LIG O 72 O 205) + (KRN C X R -0.025556) + (KRN C W R -0.025556) + (KRN C A R -0.025556) + (KRN O 244 R -0.025556) + (KRN C V R -0.025556) + (KRN C Y R -0.025556) + ) + ) +(CHARACTER C P + (CHARWD R 0.678329) + (CHARHT R 0.683332) + (CHARIC R 0.102419) + (COMMENT + (KRN C A R -0.076666) + (KRN O 244 R -0.076666) + ) + ) +(CHARACTER C Q + (CHARWD R 0.766663) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (CHARIC R 0.0940275) + ) +(CHARACTER C R + (CHARWD R 0.729441) + (CHARHT R 0.683332) + (CHARIC R 0.038681) + (COMMENT + (KRN C n R -0.025556) + (KRN O 237 R -0.025556) + (KRN C l R -0.025556) + (KRN C r R -0.025556) + (KRN C u R -0.025556) + (KRN O 230 R -0.025556) + (KRN O 276 R -0.025556) + (KRN C m R -0.025556) + (KRN C t R -0.025556) + (KRN O 227 R -0.025556) + (KRN C i R -0.025556) + (KRN O 223 R -0.025556) + (KRN O 275 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C h R -0.025556) + (KRN O 236 R -0.025556) + (KRN O 222 R -0.025556) + (KRN C b R -0.025556) + (KRN C U R -0.025556) + (KRN O 210 R -0.025556) + (KRN O 246 R -0.025556) + (KRN C k R -0.025556) + (KRN O 224 R -0.025556) + (KRN C v R -0.025556) + (KRN C w R -0.025556) + (KRN C Q R -0.025556) + (KRN C T R -0.076666) + (KRN O 207 R -0.076666) + (KRN C Y R -0.076666) + (KRN C V R -0.1022215) + (KRN C W R -0.1022215) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C S + (CHARWD R 0.56222) + (CHARHT R 0.683332) + (CHARIC R 0.119722) + (COMMENT + (LIG O 72 O 252) + (LIG O 75 O 336) + (LIG O 41 O 206) + ) + ) +(CHARACTER C T + (CHARWD R 0.715551) + (CHARHT R 0.683332) + (CHARIC R 0.133055) + (COMMENT + (LIG O 41 O 207) + (KRN C y R -0.076666) + (KRN C e R -0.076666) + (KRN C o R -0.076666) + (KRN O 225 R -0.076666) + (KRN O 240 R -0.076666) + (KRN C r R -0.076666) + (KRN C a R -0.076666) + (KRN O 274 R -0.076666) + (KRN C u R -0.076666) + (KRN O 230 R -0.076666) + (KRN O 276 R -0.076666) + (KRN C A R -0.076666) + (KRN O 244 R -0.076666) + ) + ) +(CHARACTER C U + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARIC R 0.16389) + (COMMENT + (LIG O 72 O 210) + (LIG O 75 O 246) + ) + ) +(CHARACTER C V + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARIC R 0.183611) + (COMMENT + (KRN C o R -0.076666) + (KRN O 225 R -0.076666) + (KRN O 240 R -0.076666) + (KRN C e R -0.076666) + (KRN C u R -0.076666) + (KRN O 230 R -0.076666) + (KRN O 276 R -0.076666) + (KRN C r R -0.076666) + (KRN C a R -0.076666) + (KRN O 274 R -0.076666) + (KRN C A R -0.1022215) + (KRN O 244 R -0.1022215) + (LIG O 41 O 204) + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C Q R -0.025556) + ) + ) +(CHARACTER C W + (CHARWD R 0.998883) + (CHARHT R 0.683332) + (CHARIC R 0.183611) + (COMMENT + (KRN C A R -0.076666) + (KRN O 244 R -0.076666) + ) + ) +(CHARACTER C X + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARIC R 0.158055) + (COMMENT + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C Q R -0.025556) + ) + ) +(CHARACTER C Y + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARIC R 0.193832) + (COMMENT + (KRN C e R -0.076666) + (KRN C o R -0.076666) + (KRN O 225 R -0.076666) + (KRN O 240 R -0.076666) + (KRN C r R -0.076666) + (KRN C a R -0.076666) + (KRN O 274 R -0.076666) + (KRN C u R -0.076666) + (KRN O 230 R -0.076666) + (KRN O 276 R -0.076666) + (KRN C A R -0.076666) + (KRN O 244 R -0.076666) + ) + ) +(CHARACTER C Z + (CHARWD R 0.61333) + (CHARHT R 0.683332) + (CHARIC R 0.145277) + (COMMENT + (LIG O 72 O 211) + (LIG O 75 O 337) + (LIG O 41 O 212) + ) + ) +(CHARACTER O 133 + (CHARWD R 0.306665) + (CHARHT R 0.75) + (CHARDP R 0.25) + (CHARIC R 0.1875) + ) +(CHARACTER O 134 + (CHARWD R 0.514442) + (CHARHT R 0.694445) + (CHARIC R 0.1685) + ) +(CHARACTER O 135 + (CHARWD R 0.306665) + (CHARHT R 0.75) + (CHARDP R 0.25) + (CHARIC R 0.105278) + ) +(CHARACTER O 136 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARIC R 0.066312) + ) +(CHARACTER O 137 + (CHARWD R 0.306665) + (CHARHT R 0.667859) + (CHARIC R 0.117464) + ) +(CHARACTER O 140 + (CHARWD R 0.306665) + (CHARHT R 0.694445) + (CHARIC R 0.124168) + (COMMENT + (LIG O 140 O 134) + ) + ) +(CHARACTER C a + (CHARWD R 0.511108) + (CHARHT R 0.430555) + (CHARIC R 0.076714) + (COMMENT + (LIG O 75 O 274) + ) + ) +(CHARACTER C b + (CHARWD R 0.459997) + (CHARHT R 0.694445) + (CHARIC R 0.063124) + (COMMENT + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C c + (CHARWD R 0.459997) + (CHARHT R 0.430555) + (CHARIC R 0.056528) + (COMMENT + (LIG O 72 O 233) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C d + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARIC R 0.103334) + (COMMENT + (LIG O 75 O 234) + (LIG O 41 O 220) + (KRN C l R 0.051111) + ) + ) +(CHARACTER C e + (CHARWD R 0.459997) + (CHARHT R 0.430555) + (CHARIC R 0.075139) + (COMMENT + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C f + (CHARWD R 0.306665) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + (CHARIC R 0.211945) + (COMMENT + (KRN O 275 R 0.153333) + (KRN O 223 R 0.153333) + (KRN O 43 R 0.153333) + (KRN O 100 R 0.153333) + ) + ) +(CHARACTER C g + (CHARWD R 0.459997) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.088472) + (COMMENT + (LIG O 72 O 221) + (LIG O 75 O 235) + ) + ) +(CHARACTER C h + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARIC R 0.076714) + (COMMENT + (LIG O 75 O 236) + (LIG O 41 O 222) + ) + ) +(CHARACTER C i + (CHARWD R 0.306665) + (CHARHT R 0.430555) + (CHARIC R 0.076714) + (COMMENT + (LIG O 72 O 223) + (LIG O 75 O 275) + ) + ) +(CHARACTER C j + (CHARWD R 0.306665) + (CHARHT R 0.655359) + (CHARDP R 0.194445) + (CHARIC R 0.144673) + ) +(CHARACTER C k + (CHARWD R 0.459997) + (CHARHT R 0.694445) + (CHARIC R 0.107638) + ) +(CHARACTER C l + (CHARWD R 0.255554) + (CHARHT R 0.694445) + (CHARIC R 0.103334) + (COMMENT + (KRN C l R 0.051111) + ) + ) +(CHARACTER C m + (CHARWD R 0.817774) + (CHARHT R 0.430555) + (CHARIC R 0.076714) + ) +(CHARACTER C n + (CHARWD R 0.56222) + (CHARHT R 0.430555) + (CHARIC R 0.076714) + (COMMENT + (LIG O 75 O 237) + (KRN O 47 R -0.1022215) + (KRN O 47 R -0.076666) + ) + ) +(CHARACTER C o + (CHARWD R 0.511108) + (CHARHT R 0.430555) + (CHARIC R 0.063124) + (COMMENT + (LIG O 72 O 225) + (LIG O 75 O 240) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C p + (CHARWD R 0.511108) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.063124) + (COMMENT + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C q + (CHARWD R 0.459997) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.088472) + ) +(CHARACTER C r + (CHARWD R 0.421664) + (CHARHT R 0.430555) + (CHARIC R 0.107638) + (COMMENT + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER C s + (CHARWD R 0.408887) + (CHARHT R 0.430555) + (CHARIC R 0.082083) + (COMMENT + (LIG O 72 O 253) + (LIG O 75 O 376) + (LIG O 41 O 226) + ) + ) +(CHARACTER C t + (CHARWD R 0.33222) + (CHARHT R 0.61508) + (CHARIC R 0.094861) + (COMMENT + (LIG O 41 O 227) + ) + ) +(CHARACTER C u + (CHARWD R 0.536664) + (CHARHT R 0.430555) + (CHARIC R 0.076714) + (COMMENT + (LIG O 72 O 230) + (LIG O 75 O 276) + ) + ) +(CHARACTER C v + (CHARWD R 0.459997) + (CHARHT R 0.430555) + (CHARIC R 0.107638) + ) +(CHARACTER C w + (CHARWD R 0.664441) + (CHARHT R 0.430555) + (CHARIC R 0.107638) + (COMMENT + (KRN C l R 0.051111) + ) + ) +(CHARACTER C x + (CHARWD R 0.463887) + (CHARHT R 0.430555) + (CHARIC R 0.120346) + ) +(CHARACTER C y + (CHARWD R 0.485553) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.088472) + ) +(CHARACTER C z + (CHARWD R 0.408887) + (CHARHT R 0.430555) + (CHARIC R 0.122917) + (COMMENT + (LIG O 72 O 231) + (LIG O 75 O 377) + (LIG O 41 O 232) + ) + ) +(CHARACTER O 173 + (CHARWD R 0.511108) + (CHARHT R 0.430555) + (CHARIC R 0.092079) + (COMMENT + (LIG O 55 O 174) + ) + ) +(CHARACTER O 174 + (CHARWD R 1.022217) + (CHARHT R 0.430555) + (CHARIC R 0.092079) + ) +(CHARACTER O 175 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARIC R 0.1225) + ) +(CHARACTER O 176 + (CHARWD R 0.511108) + (CHARHT R 0.667859) + (CHARIC R 0.115854) + ) +(CHARACTER O 177 + (CHARWD R 0.511108) + (CHARHT R 0.667859) + (CHARIC R 0.104744) + ) +(CHARACTER O 200 + (CHARWD R 0.754995) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (CHARIC R 0.0940275) + (COMMENT + (KRN C X R -0.025556) + (KRN C W R -0.025556) + (KRN C A R -0.025556) + (KRN O 244 R -0.025556) + (KRN C V R -0.025556) + (KRN C Y R -0.025556) + ) + ) +(CHARACTER O 201 + (CHARWD R 0.773607) + (CHARHT R 0.75) + (CHARIC R 0.087209) + ) +(CHARACTER O 202 + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (CHARIC R 0.16389) + ) +(CHARACTER O 203 + (CHARWD R 0.385553) + (CHARHT R 0.75) + (CHARIC R 0.158055) + ) +(CHARACTER O 204 + (CHARWD R 0.768885) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (CHARIC R 0.145277) + (COMMENT + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C Q R -0.025556) + ) + ) +(CHARACTER O 205 + (CHARWD R 0.766663) + (CHARHT R 0.75) + (CHARIC R 0.0940275) + (COMMENT + (KRN C X R -0.025556) + (KRN C W R -0.025556) + (KRN C A R -0.025556) + (KRN O 244 R -0.025556) + (KRN C V R -0.025556) + (KRN C Y R -0.025556) + ) + ) +(CHARACTER O 206 + (CHARWD R 0.56222) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (CHARIC R 0.119722) + ) +(CHARACTER O 207 + (CHARWD R 0.715551) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (CHARIC R 0.133055) + (COMMENT + (KRN C y R -0.076666) + (KRN C e R -0.076666) + (KRN C o R -0.076666) + (KRN O 225 R -0.076666) + (KRN O 240 R -0.076666) + (KRN C r R -0.076666) + (KRN C a R -0.076666) + (KRN O 274 R -0.076666) + (KRN C u R -0.076666) + (KRN O 230 R -0.076666) + (KRN O 276 R -0.076666) + (KRN C A R -0.076666) + (KRN O 244 R -0.076666) + ) + ) +(CHARACTER O 210 + (CHARWD R 0.743329) + (CHARHT R 0.75) + (CHARIC R 0.16389) + ) +(CHARACTER O 211 + (CHARWD R 0.61333) + (CHARHT R 0.75) + (CHARIC R 0.145277) + ) +(CHARACTER O 212 + (CHARWD R 0.61333) + (CHARHT R 0.683332) + (CHARDP R 0.194445) + (CHARIC R 0.145277) + ) +(CHARACTER O 213 + (CHARWD R 0.715551) + (CHARHT R 0.683332) + (CHARDP R 0.170138) + (CHARIC R 0.145277) + ) +(CHARACTER O 214 + (CHARWD R 0.754995) + (CHARHT R 0.683332) + (CHARDP R 0.116667) + (CHARIC R 0.0940275) + (COMMENT + (KRN C X R -0.025556) + (KRN C W R -0.025556) + (KRN C A R -0.025556) + (KRN O 244 R -0.025556) + (KRN C V R -0.025556) + (KRN C Y R -0.025556) + ) + ) +(CHARACTER O 215 + (CHARWD R 0.773607) + (CHARHT R 0.75) + (CHARIC R 0.087209) + ) +(CHARACTER O 216 + (CHARWD R 0.743329) + (CHARHT R 0.683332) + (CHARDP R 0.116667) + (CHARIC R 0.16389) + ) +(CHARACTER O 217 + (CHARWD R 0.743329) + (CHARHT R 0.75) + (CHARIC R 0.180557) + ) +(CHARACTER O 220 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + (CHARIC R 0.103334) + (COMMENT + (KRN C l R 0.051111) + ) + ) +(CHARACTER O 221 + (CHARWD R 0.459997) + (CHARHT R 0.667859) + (CHARDP R 0.194445) + (CHARIC R 0.088472) + ) +(CHARACTER O 222 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + (CHARIC R 0.076714) + ) +(CHARACTER O 223 + (CHARWD R 0.306665) + (CHARHT R 0.655359) + (CHARIC R 0.101896) + ) +(CHARACTER O 224 + (CHARWD R 0.459997) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + (CHARIC R 0.107638) + ) +(CHARACTER O 225 + (CHARWD R 0.511108) + (CHARHT R 0.667859) + (CHARIC R 0.117464) + (COMMENT + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER O 226 + (CHARWD R 0.408887) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.082083) + ) +(CHARACTER O 227 + (CHARWD R 0.33222) + (CHARHT R 0.61508) + (CHARDP R 0.194445) + (CHARIC R 0.094861) + ) +(CHARACTER O 230 + (CHARWD R 0.536664) + (CHARHT R 0.667859) + (CHARIC R 0.129629) + ) +(CHARACTER O 231 + (CHARWD R 0.408887) + (CHARHT R 0.667859) + (CHARIC R 0.122917) + ) +(CHARACTER O 232 + (CHARWD R 0.408887) + (CHARHT R 0.430555) + (CHARDP R 0.194445) + (CHARIC R 0.122917) + ) +(CHARACTER O 233 + (CHARWD R 0.459997) + (CHARHT R 0.430555) + (CHARDP R 0.170138) + (CHARIC R 0.056528) + (COMMENT + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER O 234 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARDP R 0.116667) + (CHARIC R 0.103334) + (COMMENT + (KRN C l R 0.051111) + ) + ) +(CHARACTER O 235 + (CHARWD R 0.459997) + (CHARHT R 0.694445) + (CHARDP R 0.194445) + (CHARIC R 0.114027) + ) +(CHARACTER O 236 + (CHARWD R 0.511108) + (CHARHT R 0.694445) + (CHARDP R 0.116667) + (CHARIC R 0.076714) + ) +(CHARACTER O 237 + (CHARWD R 0.56222) + (CHARHT R 0.643056) + (CHARIC R 0.090139) + (COMMENT + (KRN O 47 R -0.076666) + ) + ) +(CHARACTER O 240 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.079074) + (COMMENT + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER O 243 + (CHARWD R 0.817774) + (CHARHT R 0.694445) + (CHARDP R 0.194443) + (CHARIC R 0.066312) + ) +(CHARACTER O 244 + (CHARWD R 0.743329) + (CHARHT R 0.75) + (COMMENT + (KRN C n R -0.025556) + (KRN O 237 R -0.025556) + (KRN C l R -0.025556) + (KRN C r R -0.025556) + (KRN C u R -0.025556) + (KRN O 230 R -0.025556) + (KRN O 276 R -0.025556) + (KRN C m R -0.025556) + (KRN C t R -0.025556) + (KRN O 227 R -0.025556) + (KRN C i R -0.025556) + (KRN O 223 R -0.025556) + (KRN O 275 R -0.025556) + (KRN C C R -0.025556) + (KRN O 213 R -0.025556) + (KRN C O R -0.025556) + (KRN O 205 R -0.025556) + (KRN C G R -0.025556) + (KRN O 201 R -0.025556) + (KRN O 215 R -0.025556) + (KRN C h R -0.025556) + (KRN O 236 R -0.025556) + (KRN O 222 R -0.025556) + (KRN C b R -0.025556) + (KRN C U R -0.025556) + (KRN O 210 R -0.025556) + (KRN O 246 R -0.025556) + (KRN C k R -0.025556) + (KRN O 224 R -0.025556) + (KRN C v R -0.025556) + (KRN C w R -0.025556) + (KRN C Q R -0.025556) + (KRN C T R -0.076666) + (KRN O 207 R -0.076666) + (KRN C Y R -0.076666) + (KRN C V R -0.1022215) + (KRN C W R -0.1022215) + (KRN C e R -0.051111) + (KRN C a R -0.051111) + (KRN O 274 R -0.051111) + (KRN C o R -0.051111) + (KRN O 225 R -0.051111) + (KRN O 240 R -0.051111) + (KRN C d R -0.051111) + (KRN O 234 R -0.051111) + (KRN O 220 R -0.051111) + (KRN C c R -0.051111) + (KRN O 233 R -0.051111) + (KRN C g R -0.051111) + (KRN O 221 R -0.051111) + (KRN O 235 R -0.051111) + (KRN C q R -0.051111) + ) + ) +(CHARACTER O 245 + (CHARWD R 0.385553) + (CHARHT R 0.75) + (CHARIC R 0.196388) + ) +(CHARACTER O 246 + (CHARWD R 0.743329) + (CHARHT R 0.75) + (CHARIC R 0.16389) + ) +(CHARACTER O 252 + (CHARWD R 0.56222) + (CHARHT R 0.683332) + (CHARDP R 0.170138) + (CHARIC R 0.119722) + ) +(CHARACTER O 253 + (CHARWD R 0.408887) + (CHARHT R 0.430555) + (CHARDP R 0.170138) + (CHARIC R 0.082083) + ) +(CHARACTER O 274 + (CHARWD R 0.511108) + (CHARHT R 0.643056) + (CHARIC R 0.081343) + ) +(CHARACTER O 275 + (CHARWD R 0.306665) + (CHARHT R 0.655359) + (CHARIC R 0.076714) + ) +(CHARACTER O 276 + (CHARWD R 0.536664) + (CHARHT R 0.655359) + (CHARIC R 0.102419) + ) +(CHARACTER O 300 + (CHARWD R 0.766663) + (CHARHT R 0.694445) + (CHARIC R 0.095972) + ) +(CHARACTER O 336 + (CHARWD R 0.56222) + (CHARHT R 0.683332) + (CHARDP R 0.116667) + (CHARIC R 0.119722) + ) +(CHARACTER O 337 + (CHARWD R 0.61333) + (CHARHT R 0.683332) + (CHARDP R 0.116667) + (CHARIC R 0.145277) + ) +(CHARACTER O 375 + (CHARWD R 0.28111) + (CHARHT R 0.430555) + ) +(CHARACTER O 376 + (CHARWD R 0.408887) + (CHARHT R 0.430555) + (CHARDP R 0.116667) + (CHARIC R 0.082083) + ) +(CHARACTER O 377 + (CHARWD R 0.408887) + (CHARHT R 0.430555) + (CHARDP R 0.116667) + (CHARIC R 0.122917) + ) |