[comp.text.tex] MF questions for a Indo-Iranian langauge; handling vowels

kalita@linc.cis.upenn.edu (Jugal Kolita) (03/24/91)

Hi!

I am trying to create a font for an Indo-Iranian language called
Assamese and am having a few problems to which I have no
solutions. I would appreciate if someone who knows MF well would
kindly respond to them.

THE PROBELM: PRINTING VOWELS
----------------------------
 The way vowels are printed depends on the context. In
	some cases the vowel is printed as itself.
	But, the more interesting case is when the
	vowel follows a consonent and is replaced by
	a different character (which is a "short" form of
	the vowel--called a {\em kar} or sign).

   For example, let us take the vowel `a' as in the English
	word `car' which can be phonetically written as `kar'
	(or, let's so assume).

   When we print the word `kar' in Assamese, what we actually
	print is something like `k|r' where the vertical
	bar is a "short" form or sign for the vowel `a'. This is
	because the vowel `a' follows a consonent `k'.

   Let us take another more complex example. There is a vowel that 
	corresponds to the dipthong "oe" (Let's assume it
	can be typed as one character--say capital `U'). 
	It's printed as itself
	when
	it is the first letter of a word or in some other
	special situations. But, when it occurs after
	a consonent, say `k' as in `kUr', ther
	way it is printed as something like  `[k|r' where the
	vowel's short form or sign has two parts
		a) one (i.e., the `[')
		    occuring before the consonent `k', and 
		b) the other (i.e., the `|')
		     occuring after the consonent.

LIGTABLES DON'T WORK
--------------------

Since I will type the original text in Roman script, I was trying to
use ligtables to replace vowels by the proper printed characters
depending on context. But, ligtable does not allow you to
replace a single character (e.g. the `U' above) by two
or more characters. For example, in the example of `U' above,
I would have liked to have a ligtable entry similar to
	"k": "U" =: "[" "k" "|";
That is, replace the sequence of
two characters "kU" (i.e., `k' followed by `U')
by a sequence of three characters "[k|".
This is, of course, illegal.

Ligtables  don't even seem to replace a single character by
some other character. That is, it does not allow an entry similar
to
	"k": "a" =:"k" "|";
That is the consonent `k' remains as it is, but the
vowel `a' is replaced by its sign `|'.  (In other words,
replace the sequence "ka" by "k|").


-----
If any of you know how I might handle this problem, I would appreciate
very much your letting me know.

Jugal Kalita

dhosek@euler.claremont.edu (Don Hosek) (03/24/91)

In article <39672@netnews.upenn.edu>, kalita@linc.cis.upenn.edu (Jugal Kolita) writes:
>    When we print the word `kar' in Assamese, what we actually
> 	print is something like `k|r' where the vertical
> 	bar is a "short" form or sign for the vowel `a'. This is
> 	because the vowel `a' follows a consonent `k'.

You need TeX 3.X/MF 2.X to handle the things I'm describing;
these features might *not* be in your MFbook if it's older than
about a year.

For XY->Xy, the ligtable entry looks like
ligtable "X": "Y" |=: "y";

>    Let us take another more complex example. There is a vowel that 
> 	corresponds to the dipthong "oe" (Let's assume it
> 	can be typed as one character--say capital `U'). 
> 	It's printed as itself
> 	when
> 	it is the first letter of a word or in some other
> 	special situations. But, when it occurs after
> 	a consonent, say `k' as in `kUr', ther
> 	way it is printed as something like  `[k|r' where the
> 	vowel's short form or sign has two parts
> 		a) one (i.e., the `[')
> 		    occuring before the consonent `k', and 
> 		b) the other (i.e., the `|')
> 		     occuring after the consonent.

Two ways to do this one: 
we have XY->xXy, so we could define xXy to be a single character
and have
"X" : "Y" =: "xXy";
however the number of "xXy" combinations might be prohibitively
large, so we might also want to try an approach along the lines
of
"X" : "Y" =:| "xX"; % xX is a single char, we now have "xXY"
"xX" : "Y" |=: "y"; % and now we have xXy (two characters)

a third possibility would be to have the character at "Y" be the
post-consonantal form "y" and use the boundary char ligatures.

For a complete description of the new ligtable opcodes without
buying the MFbook, get the file tex3.dif from ymir.claremont.edu
in [anonymous.sources.tex3_1]. btw, I feel this presentation is
superior to that in the MFbook).

-dh

---
Don Hosek                  | To retrieve files from ymir via the mailserver,
dhosek@ymir.claremont.edu  | send a message to mailserv@ymir.claremont.edu 
Quixote Digital Typography | with a line saying send [DIRECTORY]FILENAME
714-625-0147               | where DIRECTORY is the FTP directory (sans 
---------------------------+ "anonymous") and FILENAME is the filename, e.g. 
"send [tex]00readme.txt". There is a list of files in each directory under the 
name 00files.txt. Binary files are not available by this technique.