Re: [Indic-computing-devel] How are indic fonts rendered?
Status: Alpha
Brought to you by:
jkoshy
From: Keyur S. <key...@ya...> - 2002-02-14 05:45:58
|
--- Arun Sharma <ar...@sh...> wrote: > > > > > > - do (A) and (B) have to be done multiple times? > > > > Yes. It has to be done for each syllable. > > Let me pose the question in a different way - can it be > done with one > pass over the character codes ? No. It has to be done for each syllable. While reordering, we look at the characteristic of characters, e.g., whether it is base character or matra, etc. Doing it in one pass is not possible as it mixes all the characters and it becomes very difficult to decide at which place a character sequence should move. > If not, can you give an > example of a > character code string, where multiple passes would be > necessary to > determine the correct sequence of glyphs ? Take a simple example, U+0930 U+094D U+0915 U+094D U+0916 U+0917 In the above sequence there are two syllables, A. U+0930 U+094D U+0915 U+094D U+0916 B. U+0917 In (A), the first two character should be turned into 'Reph' glyph and place on top of glyph for U+0916 since it is base character. For that the sequence U+0930 and U+094D should be moved after U+0917 and the first syllable will be reordered as A1. U+0915 U+094D U+0916 U+0930 U+094D No reordering is necessary for the second syllable since there is only one character. Please note that this reordering is somewhat depends on the design of OpenType font substitution table (GSUB). Microsoft and Adobe has published guidelines to design OpenType fonts so that this reordering remains almost same for all fonts. This can not be done within one pass because it is difficult to determine whether U+0916 is a base character or U+0917 and consequently where to move the sequence U+0930 U+094D. > > Also a related question - are there any algorithms to > efficiently > determine how far back do you go in a string of > characters (for doing > a re-layout), when somebody hits a backspace ? Stop at > the word boundary ? A generally accepted action for Backspace is that it should remove the last character from previous syllable. However, Delete key should remove entire next syllable. Similarly, cursor should move over the syllables not characters. These are not standards but people generally feel comfortable with these operations. The same mechanism has been adopted in MS Windows 2000/XP. Using the same "Syllable Breaking State Machine" we can determione how far to move back or forth. > > Is it correct to state that the state machine that you > talked about is > specified in the font file and not a special purpose > library ? No. Syllable breaking state machine and Reordering of characters is not a part of font but they are part of special purpose library. OpenType font contains only logic for Substitution and Positioning. And Reordering is absolutely necessary for Substitution. However, in ISCII/ISFOC standard, even this substitution logic is part of the library and not the font. But there font designer must design the font according to ISFOC standard layout. In this standard whole GlyphSet has been defined and each glyph must occupy previously defined position. ISCII/ISFOC doesn't cover information for positioning of glyphs and does not provide so called "Rich Typography". Regards, Keyur __________________________________________________ Do You Yahoo!? Send FREE Valentine eCards with Yahoo! Greetings! http://greetings.yahoo.com |