Re: WD of XSL requirements released

Subject: Re: WD of XSL requirements released
From: Liam Quin <liamquin@xxxxxxxxxxxx>
Date: Wed, 17 Jun 1998 15:50:09 -0400 (EDT)
On Wed, 13 May 1998, Jon Bosak wrote:
> The first working draft of the requirements for XSL has just been made
> public:

I'm sorry I've taken so long to comment -- and hope the following is still
of use.


Copyfitting -- I'd like more details of what is meant by this...

Hanging Punctuation -- this is good to see; there should be a way to specify
    which symbols are hung, and by how much (e.g. 100% or 50%)

Leading -- probably want "above and below the tag boundary", no?

Non-rectangular areas -- is this text on a specified graphics path?

Predictability -- does this preclude deliberately random effects?

Run-arounds -- why only rectangular areas??

Other issues with text:
-- ligatures?
-- conditional fonts?
    choose first font set that's entirely available,
    where by font set i mean the set of fonts needed for the document
    (e.g. one might say that it must have small caps, italic, bold, roman)
  then select other features/behaviours based on this

Columns, Floats, Keeps, Etc
    may want to say, "no column break allowed here", or
    "this thing must not be last on a page, no matter what follows it
    (except a specific page break perhaps!)

    Character selection... should "small style" be "small caps"??

what about text effects and distortion?  background-lighting-direction :)

    -- need to be able to specify the glyph to use indicate hyphention
    (not always ­)

    -- need to be able to specify a glyph to use if a word is broken where
       there was a hard hyphen (some English dictionaries use a double
       hyphen, rather like a slanted = sign, for this, so you can tell if
       this was originally "ifthis" or "if-this".

    -- need all four combinations of breakable and non-breakable space,
       both fixed width and paddable-for-justification

    -- need a soft hyphen point that does not insert a hyphen -- e.g. for
       and also need to give a list of symbols before and/or after which
       hyphenation can occur, and optionally a list of symbols that
       vanish when used as hyphenation points.  TeX (and some versions
       of troff) can do all this, of course.

    Numbering Systems ("No known special issues here")

    actually consider the way 1 000 000 is written as 1,000,000 in North
    America and as 1.000.000,00 in France... the spaces in that first
    number may or may not be hyphenation points, but a hyphen must be
    inserted if they are so used.  Also, North America uses the full stop
    for a decimal point where France uses the comma and the UK used to
    use the raised dot (and now uses a mixture, mostly because of American
    computers and typewriters I think!!).

    Note that mixing Hebrew and Latin fonts in the same line requires
    making the Hebrew text a little smaller than the Western caps, but
    larger than small caps for readability.

    Justification varies by script, e.g. for Devanagari (Hindi, Snaskrit)
    is usually not done by stretching glyphs as far as I can tell.
    Also note that there are alignment issues when mixing Devanagari
    with Western Latin 1 text.

Infrequently used, dead and archaic languages...
    Note that Polytonik Greek was used up until 1975, although
    Hellenistic Greek (e.g. as per the New Testament) is actually
    rather simpler.

    So this means that although Classical Greek is dead, much of the
    typographic support for it is needed in practice today for Greek.

    Query Expressions -- why disjunctions but not conjunctions??

    User Defined Functions
        if (as stated under Side Effects) there are no global side effects,
        you'll need "local side effects", i suppose, in order to do any
        form of iterations, if there is no recursion.
        In other words,
            for (i = 1; i < 20; i++) {
                // can't do this, because the i++ has the side effect of
                // changing the value of i

            function loop(howfar, max) {
                if (howfar < max) {
                    loop(howfar + 1, max);
                    // recursive, can't do this

            function kludge(max) {
                if (max > 100) {
                    bigkludge(howfar, max);
                } else {
                    if (max > 99) stuff
                    if (max > 98) stuff
                    if (max > 97) stuff

        The real question is whether "no side effects" means that there
        is referential transparency or not.

        If not, you can have iteration and i++.

        Also, of course, you could argue that a printed page is itself
        a rather concrete side-effect...

    -- how does this relate to SMIL?

    -- what about link transitions, and the relationship to XLink?
       Need to be able to say, if the user follows this link, the current
       page should fade to grey, and the new page should then fade in from
       that gray, at medium speed, default 3 second, but over-ridden for
       users with attention deficit disorder :-)

    Grain specification for stock, imposition -- these are usually external:
    perhaps use RDF for this??


[thanks to Tony Graham for help in mailer problems with this posting]

Liam Quin --  the barefoot typographer -- Toronto
lq-text: freely available Unix text retrieval
IRC: discuss XML/SGML/XSL/XLL/DSSSL Mondays in #XML
email address: l i a m q u i n, at host: i n t e r l o g  dot  c o m

 XSL-List info and archive:

Current Thread