Tue 03 Oct 2017 05:08:32 PM UTC, comment #2:
I have been working on a bigger, related issue, that of the very messy and reduplicated contents of the Devanagari 'cjct' and 'pres' lookups. These evolved through changing standards 'deva' and 'dev2' and requirements to support Hindi, Sanskrit, and Marathi, as well as Old Hindi.
The question arises, when is it appropriate to use 'cjct' and when to use 'pres'? In 'dev2', 'cjct' serves as a step in identifying consonant conjuncts which aren't already identified by preceding lookups -- while 'pres' is only a ligature lookup, which functions under either standard.
I think it has to do with how well the preceding lookups have done in identifying the consonant clusters, and some design strategies. I'll write some of those down here for posterity.
In Devanagari particularly, many consonants have half forms, and the presence of an entry in the 'half' table is enough to indicate that a half+consonant is a cluster. But several consonants don't have a proper half form. The 'cjct' table could be used to indicate clusters of those consonants.
If one intends to also support the 'deva' shaper, the 'cjct' entries will need to be repeated in 'pres' lookups, however, and that's a drag.
One strategy would be to simply copy the 'cjct' tables as 'pres' tables. But every time one modifies one copy, one must remember to modify the other, and if there are any other 'pres' tables for any other purpose, they tend to get mixed up. This is poor.
Another would be to give each 'cjct' table also a 'pres' feature. That might work. Haven't tried it. One possible issue is that really the 'cjct' tables do more than the 'pres' tables do, in that they instruct the shaper about conjuncts. I don't know what the effect is.
Another strategy is to insure that each consonant has an entry in the half table -- the "stemless" consonants, which don't take half forms, can be mapped to halant forms -- which need exist only temporarily. Then there's no need whatever for 'cjct' lookups. One objection to this strategy is that it necessitates intermediate "halant" forms, that maybe are never rendered -- and often, they necessitate a cascade of dependent forms, such as nukta-halant forms, etc.
A practical problem with that strategy arises if "rkrf" rakaar-forms are used: because the rkrf absorbs the halant before the ra, a following halant+consonant won't be recognized as a conjunct with the preceding ra, unless the rakaar-form has a corresponding "half" form. So far, I have found this is a problem only for ka+ra+ya क्र्य -- a half-form of ka+ra's is objectionable, because it would be indistinguishable from the half-form of ta+ra. So the cjct table might contain this single ligature.
The other conjuncts tht likewise sport a non-terminal rakaar are the Sanskrit क्त्र्य, ड्र्य, द्र्य, ष्ट्र्य . But in each of these cases the ra follows a stemless consonant -- since in this strategy, these are alredy getting intermediate halant forms, they can get rakar-halant forms as well. And there is another solution: give the ka-ra an intermediate rakar-halant form. It breaks a pattern, but it would work.
As a side-note -- in Devanagari the 'pstf' table is apparantly inactive. This could be useful for the special "combining" form of -ya that absorbs a preceding virama. I wonder if this wasn't overlooked when they made the decision to disable that table.
|