Iliad localization: managing layouts, #render: someText on: aWidget message

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Iliad localization: managing layouts, #render: someText on: aWidget message

Bèrto ëd Sèra
Hi!

In my blog post
(http://smalltalk.gnu.org/blog/bertodsera/iliad-localization-package
), I had stated that top-bottom layouts were a “hope for the future”.
I was wrong. The future is now, as I found out today. See
http://msdn.microsoft.com/en-us/library/ms531187(VS.85).aspx

Note that only Latin chars will appear as 90 degs rotated, Oriental
scripts that make a normal use of this layout do appear as vertical.

I provided to correct the post and to add the reference. This is good
news, because it means that 98% of the users are immediately able to
use this feature (with only us heretics funnily barred out from things
that are supposed to be “socially responsible, i.e., our bag).

I'm aware that most western coders won't currently use it, because it
will fail on non-IE browsers, yet my take is that the power of the
Eastern markets will drive anyone to adopt it pretty soon.

Anyway, this means two things:
1.there is already a widespread industry standard for this issue that
almost anyone can use
2.it gets important that we can manage it, as AFAIK no other framework can

As a first reaction I will turn the #asString message into an
#asMsWritingMode message. I did not really like to call it #asString
because it doesn't do what a usual #asString does. This MS thing
provides me with a readable solution that returns a well readable
standard, one that can be widely used in HTML tagging. I will also
re-factor TextLayout, to make it properly map all of the 8 existing
layouts.

Now to the question raised by Stefan about a possible #render:
someText on: aWidget message. As long as I wasn't aware of this MS
solution I would have quoted an old song and answered “take me into
shallow waters, before I get too deep...” . It really looked like we
were trying to use a non-existing thing, based on our imagination
only. Now things have changed, because we DO have a tool and can
verify the results (even if this sadly means I have to reinstall
Windows on some box).

I'm still trying to digest the news, so I won't immediately venture
into details. I'd just like to ask Stefan if he could clarify what
this message was expected to do.

--
==============================
Constitution du 24 juin 1793 - Article 35. - Quand le gouvernement
viole les droits du peuple, l'insurrection est, pour le peuple et pour
chaque portion du peuple, le plus sacré des droits et le plus
indispensable des devoirs.


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Iliad localization: managing layouts, #render: someText on: aWidget message

Stefan Schmiedl
On Fri, 31 Jul 2009 15:58:11 +0300
Bèrto ëd Sèra <[hidden email]> wrote:

> I'm still trying to digest the news, so I won't immediately venture
> into details. I'd just like to ask Stefan if he could clarify what
> this message was expected to do.

The message render: someText on: aWidget was intended as placeholder,
since _I_ don't know what _you_ are going to do with TextLayout :-)

As I'm picturing TextLayout and friends to be layout engines, I'd
expect them to handle nitty-gritty layout details for me, so that
the different concerns are clearly separated.

As a TextLayout user, it's my job to provide the content, and pass
it to a suitable TextLayout implementation. TextLayout's responsibility
should be to take care of positioning, font selection, etc. For this
to work in an Iliad setting, a TextLayout needs to know what to put
where and we have arrived at the message "render: someText on: aWidget"

BTW: I looked at the MSDN page
> http://msdn.microsoft.com/en-us/library/ms531187(VS.85).aspx
and am a bit confused by their pictures...

lr-tb is what I consider to be normal.

rl-tb looks to be the same with "text-align: right", but this
can't be right... I'd expect rl-tb to render "hello world" as

  |          dlrow olleh |

and not

  |          hello world |

as MSDN shows it. As I understand it, rl means that the first glyph
appears in the right-most position, right?

confused,
s.


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Iliad localization: managing layouts, #render: someText on: aWidget message

Stefan Schmiedl
On Fri, 31 Jul 2009 19:41:57 +0300
Bèrto ëd Sèra <[hidden email]> wrote:

> > rl-tb looks to be the same with "text-align: right", but this
> > can't be right... I'd expect rl-tb to render "hello world" as
> >  |          dlrow olleh |
> > and not
> >  |          hello world |
> It's not so simple. Font rendering implies a hidden rendering layer
> that we do not control as it depends on unicode and it's managed
> directly by CSS standards (at least as long as you use UTF-8, not sure
> of what happens if you resort to other codings).

ah ... so if the example had used arabic glyphs it would have
appeared correctly. Learned something, thanks.

> The unaddressed problems are not with fonts (unless you deal with
> choosing different typefaces, sizes, etc), but rather with what
> #content does. For example,
>
> a TopBottom layout needs
> 1) to exchange colums with rows (and I guess we can hack this in
> pretty much a user transparent way)
> 2) to make sure that we can read an horizontal scroll, rather than a
> vertical one. (pretty an headache, as I'm currently not aware of a way
> to have a fixed 100% height for an HTML table)
>
> a rightToLeft horizontal layout needs to
> 1) invert the float attributes of the inline images

That's what the different TextLayout subclasses should handle.

While I was thinking about a good example, where css/js are
not enough to handle the requirements for different types
of writing directions, I suddenly recognized what we're
dealing with her: PluggableLayout

So each subclass of PluggableLayout adds the necessary
js/css statements to the page header and then implements one
polymorphic message, say layout:on: (no render:on: anymore).

Keep "inner, moving" widgets in a dictionary accessible to the outer
widget, so that you can tell it to place it's content in the
correct way.

  OuterWidget [
    | innerWidgets |
    contents [
      ^ [ :e | self textLayout layout: innerWidgets on: e ]
    ]
  ]

where "self textLayout" answers e.g. one of the following:

  TwoColLayout [
    layout: widgets on: parent [ |d|
      d := parent div class: 'twocollayout'.
      d build: ( widgets at: #search ).
      d div
        class: 'twocolumns';
        build: ( widgets at: #results );
        build: ( widgets at: #history )
    ]
  ]

  WeirdThreeColLayout [
    layout: widgets on: parent [
      parent div
        class: 'threecolumns';
        build: ( widgets at: #history );
        build: ( widgets at: #results );
        build: ( widgets at: #search )
    ]
  ]

If necessary, the "inner" widgets themselves could use the same
approach and implement contents like OuterWidget above does.

> Many other such things will popup in time. The target is to make all
> the "obvious moves" in a transparent way, so that they need not being
> hardcoded into the #content messages. In an ideal package you wouldn't
> have to change a line of code to port your web-design design to RTL.

As long as you provide a generic method to assign the correct layouter
to a widget, that would be the case.

s.


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Iliad localization: managing layouts, #render: someText on: aWidget message

Nicolas Petton
Hi,

I'm just back from a trip, and I just saw all those emails about
Iliad :) Thank you very much for your interest!!

Now I have to read all of them ;)

Cheers!

Nico

_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk

signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Iliad localization: managing layouts, #render: someText on: aWidget message

Bèrto ëd Sèra
Thank YOU for making this possible :) Without your work there wouldn't
be an issue to discuss :)

Berto

--
==============================
Constitution du 24 juin 1793 - Article 35. - Quand le gouvernement
viole les droits du peuple, l'insurrection est, pour le peuple et pour
chaque portion du peuple, le plus sacré des droits et le plus
indispensable des devoirs.


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Iliad localization: managing layouts, #render: someText on: aWidget message

Bèrto ëd Sèra
I put up a testcase for this MS thing, so we get to know what the new
layout manager does by itself and what we have to manage on our own.
Unfortunately, it is limited to windoze users, from IE8 on... so I
cannot execute the test myself (gentoo and Fedora is all I have), but
I arranged to get help from people on #gentoo-it IRC, and they should
mail me screenshots of what they see.

I used a handful of scripts, to get a rough idea of how they are
treated by this new feature. I put in a fake form, a table and a
couple of floated images. It should be enough for a first exploration.
If we are lucky most of the stuff will happen by itself, as I placed
the class in the BODY tag.

It should be noted that I also found a W3C draft that goes pretty much
on the same lines, so we can expect this thing to become general (as I
expected, the power of the Asian markets is growing). You can read the
draft here: http://www.w3.org/TR/2001/WD-css3-text-20010517/#PrimaryTextAdvanceDirection
wjile I remind you that what we are testing is a MS feature described
here: http://msdn.microsoft.com/en-us/library/ms531187(VS.85).aspx

Now the test case:

http://testlayout.i-iter.org/bt-lr.html
http://testlayout.i-iter.org/bt-rl.html
http://testlayout.i-iter.org/lr-bt.html
http://testlayout.i-iter.org/lr-tb.html
http://testlayout.i-iter.org/rl-bt.html
http://testlayout.i-iter.org/rl-tb.html
http://testlayout.i-iter.org/tb-lr.html
http://testlayout.i-iter.org/tb-rl.html

Pls, when you do the test, make a screenshot for each page and mail
them to me, together with basic data like IE version and Win version.
I will publish them on the foundation site, so we can keep them for
comparison when in doubt (since it really has no effect on any other
browser/OS).

I remind you all that the expected effects concern mostly colum 3
(Asian), which are expected to remain upright even when the LTR text
(thai, russian and english in the examples) should be turned some 90
degrees. I confes that I'm extremely curious of how forms will behave,
so if you have friends who can type in an asian language, pls ask them
to try the fake form and see if it's useable (supposing that it gets
rotated).

Berto

--
==============================
Constitution du 24 juin 1793 - Article 35. - Quand le gouvernement
viole les droits du peuple, l'insurrection est, pour le peuple et pour
chaque portion du peuple, le plus sacré des droits et le plus
indispensable des devoirs.


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Iliad localization: managing layouts, #render: someText on: aWidget message

Paolo Bonzini-2
Reply | Threaded
Open this post in threaded view
|

Re: Iliad localization: managing layouts, #render: someText on: aWidget message

Bèrto ëd Sèra
Hi!

> Let's stay a bit more in-topic, there are other MLs to discuss this.

Yes and no.

Yes, because it's not gst at all, so it doesn't belong in here. Full stop.

No, because the output of the test conditions what the localization
package will have to do with layouts, and it will be used as a
reference throughout all the development cycle. Having this on another
ML would kind of be quite dispersive.

Possibly we need an Iliad-only subML, in which we can analyze the
domain of the problems we are trying to solve? I have no problem in
setting up one, if needed, I just wonder if we already have the
traffic numbers that would call for such a strict division... yet it's
not me having the burden to administer this ML, so the decision must
be made but those who pour sweat in (i.e., Paolo)

Just let me know and I will act as you require :)

Berto

--
==============================
Constitution du 24 juin 1793 - Article 35. - Quand le gouvernement
viole les droits du peuple, l'insurrection est, pour le peuple et pour
chaque portion du peuple, le plus sacré des droits et le plus
indispensable des devoirs.


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Iliad localization: managing layouts, #render: someText on: aWidget message

Paolo Bonzini-2
> Yes, because it's not gst at all, so it doesn't belong in here. Full stop.
>
> No, because the output of the test conditions what the localization
> package will have to do with layouts, and it will be used as a
> reference throughout all the development cycle. Having this on another
> ML would kind of be quite dispersive.

What is not on-topic is asking for renderings of the CSS3 (?) feature.
Everything else is on topic.  There is no need for an Iliad ML right now
and, when it will exist, it will probably not be on gnu.org anyway,
so it wouldn't be administered by me.

Paolo


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk