Skip to content

Proposals for improving bidirectional text support #160

Description

@slon-aby

Current situation

Current problems arise from the fact that <rtl> is a formatting attribute. It is allowed only at lower text level and cannot be mixed with content elements. As a result:

  • It is impossible to describe a right-to-left layouts of tables (rows start on right) and lists (markers are on the right).
  • It is impossible to set the default direction for all or multiple paragraphs. The <rtl> element must be applied to each text run individually.
  • It is impossible to have inline pictures (and other inline elements like checkmarks) embedded within the RTL text span because corresponding elements cannot be inside <rtl>. But there are no problems with embedding inline pictures to LTR text spans.

Proposals

What is proposed:

  • Promote <rtl> to content element and allow to intermix it with other content elements.
  • Define the semantics of it as:
    • At block level:
      • It specifies the rendering direction for direction-dependednt nested elements like tables and lists.
      • It specifies the default paragraph direction for nested text.
    • At inline level:
      • It creates a "right-to-left isolate" rendering zone as it described in UAX#9 of Unicode standard.
  • Add the <ltr> element for switching back to left-to right layout from right-to left. E.g. for describing an English text island placed on an Hebrew page.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions