RE: Rotated Glyphs

From: Frank da Cruz (fdc@columbia.edu)
Date: Thu Jun 20 2002 - 13:21:56 EDT


Marco Cimarosti <marco.cimarosti@essetre.it> wrote:
> Frank da Cruz wrote:
> > As part of the release, I made some screen shots showing text in many
> > languages and writing systems on the same terminal screen:
> >
> > http://www.columbia.edu/kermit/glass.html
> >
> > The CJK examples were so crowded I didn't notice until James
> > Kass pointed it
> > out that they were also sideways! Windows had rotated each
> > glyph 90 degrees counterclockwise.
>
> I am sorry I cannot help with this: I have never seen before such a thing
> happening in Windows. However, I have some observations that might or might
> not lead you towards a solutions.
>
> It seems that something very strange is happening with kerning: all glyphs
> seem to be equally spaced, including CJK characters (which should be twice
> the width of a Western characters, even in non-proportional fonts) and
> Hindi, which has no "monospace" version. Also the Armenian and Georgian
> glyphs look very strange (too spaced), because they are clearly designed for
> a proportional font.
>
These are the kinds of problems you encounter in a terminal emulator, in which
every character must be placed in a fixed-size cell, even CJK.

The traditional solution for CJK terminal emulation is a "duospaced" font, in
which the {K,H}an{j,z}i are double-width, the rest are single-width. I'm not
aware of any such font for Windows, although I think there is one for Linux
(X). In the future we might consider taking CJK from one font and the rest
from another, and painting doublewidth cells for the CJK.

Armenian does look a bit microscopic in this font, but not (if you scroll down
to the bottom of the page) in Everson Mono Terminal (thanks, Michael!). Oops,
the original page lacked Armenian in the EMT example, but I'll redo all the
screen shots now that I know how to get upright CJK characters.

> What I am assuming is that the display API, somehow, overrides the font's
> metric, forcing a fixed width. Do you know whether the TextOut*() API is
> called with some special flag? Maybe that flag also turns on some strange
> rotation for CJK characters.
>
> Beside that, I guess you already know that the program fails to display
> complex scripts correctly: Arabic and Hebrew are displayed left-to-right;
> Arabic has no ligatures nor contextual shaping; Hindi has no ligatures nor
> handling of non-spacing marks.
>
This is all noted on the Web page. In the traditional terminal-to-host
environment, BIDI must be handled by the host. We do plan to address some
of the other issues in a future release; for now Kermit 95 handles what
ISO 10646 refers to as "Conformance Level 1", which is mostly (if not
completely) adequate for the terminal-to-host environment where you would
probably not expect to find Indic (etc) anyway.

I suppose the irony here is that societies that were ill-served by computers
prior to 1995 are now the ones that use only the latest technology, at least
when they must deal with text in their own languages. This is similar to
countries where telecommunications networks are first installed using fiber
optics and satellites rather than building on a 125-year old copper cable
plant. But don't get me wrong, I *like* terminals and plain text :-)

- Frank



This archive was generated by hypermail 2.1.2 : Thu Jun 20 2002 - 11:46:02 EDT