Re: foreign language characters

Subject: Re: foreign language characters
From: Chris Maden <crism@xxxxxxx>
Date: Fri, 14 Nov 1997 11:14:02 -0500
[Jim Albright]

SDATA is not text.  The string

> &betdag;&schewa;&resh;&tsere;&aleph;&shin;&hiryo;&taw

generates a series of SDATA nodes.  Jade can recognize some SDATA
entities, like the Greek letters, and represent those internally as
the appropriate Unicode code points.  It will also determine an
appropriate display method in RTF; for Greek, it uses the Greek
section of Times (or Arial or whatever).  This is why your Greek text
looks correct.

Displaying a character requires not only a font (a set of pictures),
but a number (an index into that set).  This routine:

>      (define ($hebrew-trans$)
>        (make sequence
>           font-family-name: '"SIL Hebrew Trans"
>          (process-children)))

selects a set of pictures, but does not provide an index.  "&betdag;"
is not a magic incantation.

Until Jade supports the query constructor, you'll need to iterate over
any Hebrew text, processing the entities manually:

(define ($hebrew-trans$)
  (make sequence
        font-family-name: '"SIL Hebrew Trans"
        (process-text)))

(define (process-text #!optional (snl (current-node)))
  (let p-t-loop ((this-node (node-list-first (children (current-node))))
		 (other-nodes (node-list-rest (children (current-node)))))
       (sosofo-append (if (equal? (node-property 'class-name
                                                 this-node)
                                  'sdata)
                          (case (node-property 'system-data
                                               this-node)
                                ;; Hebrew letter schewa
                                (("[replacement text for schewa]")
                                 (string #\o))
                                ;; etc.
                                )
                          (else (process-node-list this-node)))
                       (if (node-list-empty? other-nodes)
                           (empty-sosofo)
                           (p-t-loop (node-list-first other-nodes)
                                     (node-list-rest other-nodes))))))

where (string #\o) creates the character "o" which, when cloaked with
the SIL Hebrew font, will look like a schewa.

This is a bit of a hack, since it's not *really* a schewa, it just
looks like one.  You could generate the correct Unicode code point for
a schewa, but I don't think that Jade would know what to do with it,
and I don't know how to extend Jade's mappings without editing the
source code.  James?

-Chris
-- 
<!NOTATION SGML.Geek PUBLIC "-//Anonymous//NOTATION SGML Geek//EN">
<!ENTITY crism PUBLIC "-//O'Reilly//NONSGML Christopher R. Maden//EN"
"<URL>http://www.oreilly.com/people/staff/crism/ <TEL>+1.617.499.7487
<USMAIL>90 Sherman Street, Cambridge, MA 02140 USA" NDATA SGML.Geek>

 DSSSList info and archive:  http://www.mulberrytech.com/dsssl/dssslist


Current Thread