From 8d7bf1809203c72b8248ca6526e8fb8365d4fbe7 Mon Sep 17 00:00:00 2001 From: r12a Date: Fri, 12 Aug 2016 20:17:41 +0100 Subject: [PATCH] json-bidi, first draft --- notes/json-bidi-data/ltr-base-direction.png | Bin 0 -> 17774 bytes notes/json-bidi-data/ltr_hash_he.png | Bin 0 -> 4993 bytes .../multiple_base_directions.png | Bin 0 -> 13010 bytes notes/json-bidi-data/rtl-base-direction.png | Bin 0 -> 17848 bytes notes/json-bidi-data/rtl_hash_he.png | Bin 0 -> 4831 bytes notes/json-bidi.html | 185 ++++++++++++++++++ 6 files changed, 185 insertions(+) create mode 100644 notes/json-bidi-data/ltr-base-direction.png create mode 100644 notes/json-bidi-data/ltr_hash_he.png create mode 100644 notes/json-bidi-data/multiple_base_directions.png create mode 100644 notes/json-bidi-data/rtl-base-direction.png create mode 100644 notes/json-bidi-data/rtl_hash_he.png create mode 100644 notes/json-bidi.html diff --git a/notes/json-bidi-data/ltr-base-direction.png b/notes/json-bidi-data/ltr-base-direction.png new file mode 100644 index 0000000000000000000000000000000000000000..8b50c1c3ffdea96ef72227ba53bf2fbf78bf091b GIT binary patch literal 17774 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 UhHdA3WzafxPgg&ebxsLQ08r+(Y5)KL literal 0 HcmV?d00001 diff --git a/notes/json-bidi-data/ltr_hash_he.png b/notes/json-bidi-data/ltr_hash_he.png new file mode 100644 index 0000000000000000000000000000000000000000..66d54c183771dc8252848756dc3ded2a453b6fdc GIT binary patch literal 4993 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 LNkvXXu0mjfC-;Yf literal 0 HcmV?d00001 diff --git a/notes/json-bidi-data/multiple_base_directions.png b/notes/json-bidi-data/multiple_base_directions.png new file mode 100644 index 0000000000000000000000000000000000000000..25273b0f6b7386d439e4afcb2e520e428ebb2dc4 GIT binary patch literal 13010 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

N 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 I&MBb@01sBD#sB~S literal 0 HcmV?d00001 diff --git a/notes/json-bidi-data/rtl_hash_he.png b/notes/json-bidi-data/rtl_hash_he.png new file mode 100644 index 0000000000000000000000000000000000000000..40af9103242d921f7bee8aa2b4c22c2022761176 GIT binary patch literal 4831 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 + + + +Default styling for multilingual quotes & quotation marks in HTML + + + + + +

Notes on JSON strings and text direction

+

This is a draft for to promote discussion and to work through ideas, and may be updated at any time.

+

This page gathers observations about handling of text direction and language in JSON data. It doesn't make recommendations, it just aims to draw together useful background information, questions and lines of thought to help determine the best course of action to support text direction and language metadata associated with strings in JSON objects. It was written by r12a, and these are personal thoughts, not endorsed by the i18n WG.

+

Note: it is difficult to represent bidi examples satisfactorily. For example, "פעילות הבינאום, W3C" doesn't actually show the expected position of 'W3C' when displayed, but also doesn't represent the order of characters in memory, since the first such character is פ. Code examples below show characters from left-to-right in the order in which they are stored in memory, and we'll use Hebrew to avoid the confusing effects of Arabic letters joining backwards.

+

When talking about markup in JSON strings we will make the assumption for the purposes of this discussion that the markup is HTML5.

+ + + + +
+

Why information is needed about the base direction for a string

+

In order to support correct display of text in right-to-left scripts, when they are eventually displayed to a human, it is necessary to be able to:

+
    +
  1. establish the overall base direction for a paragraph
  2. +
  3. change the base direction used for a range of inline text where needed
  4. +
+

These notes are only about the former as it relates to the JSON-based format. Indications of direction change inline would just be carried over from whatever the original author used.

+

For a simple introduction into how the Unicode bidirectional algorithm works, and where it needs additional help, see Unicode Bidirectional Algorithm basics. You will need a grasp of these basics to understand what follows.

+

By default, strings are generally handled as if their base direction (directional context) is LTR. If the base direction for the string needs to be RTL, this information needs to be associated with the string in some way, since it affects the order in which elements in the string will be rendered to a user. Without this information, users may be unable to understand a message. For example, the following shows a string presented with a RTL base direction.

+

Rtl-base-direction.png

+

Here is the same string presented with a LTR base direction.

+

Ltr-base-direction.png

+
+ + +
+

Ascertaining the base direction of strings outside of JSON

+

Strings that will be stored in JSON need to be stored in some way that indicates what base direction should be used to display them correctly later. In order to be able to store that information, it's necessary to correctly detect the base direction for the string in its original source.

+ +
+

Determining base direction from the string itself

+

It is often possible to look at the beginning of a string to determine whether it needs to be given a RTL or LTR base direction. That would work for the example above. The first strong character is RTL, so applying a RTL base direction to the string for display will produce the desired result.

+

Note, by the way, that such a first-strong detection heuristic must sometimes move past the first character in the text stream. It must pass over punctuation, numbers, and other characters that don't have strong directional properties in Unicode.

+

But sometimes finding the first strong character is actually misleading. Take a string typed into an HTML form input field such as the following:

+

Rtl hash he.png

+

The sequence of characters, shown as stored in memory, is as follows. The point to note is that the sequence starts with LTR characters.

+

‭#bidi פעילות הבינאום, W3C‬

+

If the consumer of this string were to assume that the text needs a LTR base direction, based on the first strong character, the result would be incorrect when displayed to a human.

+

Ltr hash he.png

+

A similar problem arises if the JSON string starts with markup. HTML tag names are always in Latin text, so to identify the first strong character in HTML markup you need to skip the markup, including attributes and their values. Here is an example (again the characters are shown left-to-right as stored in memory).

+

+ <p class='post'>פעילות הבינאום, W3C‬</p>

+

In some cases there are additional rules involved. For example, HTML5 skips the content of certain types of markup (such as bdi) before identifying the first strong character.

+

If, however, that markup comes with the base direction already specified, it would be important to try to understand that markup. For example:

+

+ <p dir='ltr'>‭#bidi פעילות הבינאום, W3C</p> +

+

All of the above heuristics approaches, however, assumed that first-strong detection is established as the default way to assess the base direction for a string. There are, however, other algorithms in use.

+

For example, although Facebook relies on first-strong detection to build markup with the right base direction around posts, Twitter instead counts the relative number of LTR vs RTL characters in a tweet to determine the base direction. It can be argued that Twitter's approach produces less predictable output than first-strong, but that's beside the point. The point is that there needs to be a generally agreed way to detect the base direction to promote interoperability.

+
+ +
+

Determining base direction from context

+

If this is text created using an HTML form, in order to establish the base direction you need to know the computed direction of the form field into which the text was typed. That direction may be established by inheritance from a parent element, such as the html tag, or may be set by the user with keyboard shortcuts.

+

This information about the base direction of the string needs to be captured and stored in some way by the JSON, so that the string can be displayed correctly by a consumer of the JSON data.

+
+ + +
+

Multiple paragraphs

+

In the case where the string input by the user contains multiple paragraphs (ie. multiple lines separated by line breaks in a form input or other plain text, and marked up text containing block level constructs), we only need to know the base direction of the string as a whole. Any differences in base direction introduced between such paragraphs in a single input field, eg. such as in

+

Multiple base directions.png

+

would need to be introduced by the user anyway, and the mechanism used for that would be part of the captured string. In other words, we only need to capture and store the base direction set for the input as a whole.

+

Note, however, that the base direction is not only specified as RTL or LTR. If the input field is, say, a textarea with direction set to auto, it is expected that the base direction will be determined for each line (paragraph) on the basis of the first strong character in that line.

+
+
+ + +
+

Storing the base direction in JSON

+

There needs to be a way of storing information about the base direction for a string the first time it is encoded as JSON that can be recognised and used by consumers of the JSON data.

+ +
+

Using a direction property

+

If direction information is stored as a property, there needs to be a property for each string. In the following example, a direction property at the same level as name and content would not work, since it can't serve both of those strings.

+
{
+  "@context": {
+    "@value": "http://www.w3.org/ns/activitystreams",
+     },
+  "name": "r12a posted a note",
+  "type": "Note",
+  "content": "פעילות הבינאום, W3C"
+  }
+

What may work better, however, is a string type that allows for direction to be optionally stored with each string. For example,

+
{
+  "@context": {
+    "@value": "http://www.w3.org/ns/activitystreams",
+     },
+  "name": "content" : "r12a posted a note" ,
+  "type": "Note",
+  "content": { "content" : "פעילות הבינאום, W3C", "dir" : "rtl" }
+  }
+

For this to work, all JSON applications would need to recognise the structure of these strings, and be able to extract at least the content.

+

If the direction information is omitted, the convention must be that the direction is LTR. This is important where LTR strings are injected into a RTL environment.

+

There may be some appeal to this approach, if it were possible to adopt it widely, since the base direction really is metadata about the string, viz. it is often expressed separately from the string in the original source and the final destination of the string when visible to humans. It also avoids cluttering strings with additional characters (see below). It also simplifies the process of determining the base direction of the JSON string, since the inspection procedure is straightforward. The crux, of course, is getting it recognised as a standard approach.

+

Needs more thought: [One of the problems of using the first-strong approach may be that if you are storing a string in the JSON format, you must know whether the string is coming from a non-JSON context (in which case you need to examine the context and decide whether or not to add RLM at the start of the string, etc.), or coming from a JSON context where those decisions have already be taken. If a string arrives with direction metadata, it's pretty clear that that initial process has been done.]

+
+
+

Relying on first-strong characters

+

One way to store the base direction for a string is to follow the convention that the first strong directional character in a string indicates the base direction for the whole string.

+ +
+

Plain text

+

In the case of a string such as the following,

+

+ "summary" : "‭פעילות הבינאום, W3C"

+

which starts with a RTL character, this is straightforward as long as the intended base direction is indeed RTL.

+

Consumers of the JSON string would still have to scan the string far enough to detect the first strong character.

+

In the case where there is no strong character (for example, a telephone number), there would need to be a convention that the default is LTR. (Note that this does not necessarily mean that consumers of the JSON don't need to do anything. If a consumer is inserting the string into a RTL context, it would need to ensure that the LTR base direction was preserved for that string.)

+

In the case of this example (where the characters are shown in memory order),

+

+ "content" : "‭#bidi פעילות הבינאום, W3C‬" +

+

which is a RTL phrase that started with a LTR strong character, the JSON string could have an invisible strong RTL character, ie. RLM, added to the start of the string to indicate the expected base direction of the string when consumed later.

+

An application that constructs a JSON string should only add RLM if there isn't already a strong RTL character at the start. Indiscriminate addition of RLM to RTL strings can cause a build up of redundant RLMs at the start of a string.

+

(Note that you cannot expect humans creating the original string to use RLM in this situation, since the string would look perfectly fine to them if the surrounding content was RTL. Furthermore, RLM characters are not commonly available on user keyboards, especially for mobile devices.)

+

This way of indicating the intended base direction only works, however, if all consumers of the JSON strings know that they should look for the first strong character to determine the base direction that should be applied.

+
+ + +
+

Strings that are enclosed in markup

+

Some strings may start with markup. Here we are looking at a string that begins and ends with HTML markup. For example,

+

+ "summary" : "<p class="summary">‭פעילות הבינאום, W3C</p>" +

+

A consumer application that looks for the first strong character in such a string will always encounter a LTR character first, and the JSON string could either:

+
    +
  1. assume that the consumer will skip the markup to detect the first character, or
  2. +
  3. put a directional control character at the start of the string in order to represent the base direction.
  4. +
+

If the incoming HTML happens to already contain a dir attribute on the surrounding tags, eg.

+

+ "summary" : "<p dir="rtl" class="summary">#bidi ‭פעילות הבינאום, W3C</p>" +

+

then, the question is whether to continue to put a directional character at the start of the string to indicate the intended base direction, or to assume that the consumer of the JSON string will know enough about the markup to recognise that dir="rtl" already specifies the direction, and use that.

+

It may be worth noting that putting a control character such as RLM before a p tag would have no effect on the rendering of a string where its destination is HTML, since RLM doesn't create a base direction in HTML. For that you would need to use markup. (Embedding/isolating control code pairs would not work either, since Unicode controls are only effective within the current paragraph (ie. they are inline constructs), and the p tag immediately initiates a new paragraph.)

+
+
+
+ + +
+

Consuming JSON strings

+ +
+

Consuming JSON strings that use first-strong characters to indicate base direction

+

Let's suppose that some JSON strings will eventually be displayed to an end user as part of a Web page. When the text is inserted into a target document, the application that reads the JSON needs to also use first-strong heuristics to detect the direction, and then build markup around the string to ensure that it is presented appropriately to the user. (This is probably easiest to achieve by using dir=auto on a block element around the string, or using span dir=auto or bdi around inline presentations.)

+

The point here is that the model needs to establish a convention that consumers should use the first-strong heuristic approach to represent the base direction, so that the consuming application knows where to look for the information about base direction that it will need while rendering the string in the destination. This is important because there are other heuristic approaches that ignore the first-strong character. (Twitter, for example, does NOT currently use first-strong to determine the direction of text in a tweet. It looks instead at the overall content of the tweet. Also, currently both Twitter and Facebook appear to actively strip out directional control characters before creating the HTML that supports their display. See https://www.w3.org/International/wiki/Bidi_in_social_media.)

+

Btw, there are likely to be some special rules applied to the presentation of strings in some contexts. For example, Twitter locates, and treats specially, certain sequences of characters that begin with @ or #, isolating them and giving them an inline direction of LTR if they contain LTR characters.

+

Note also that if the consumed JSON string is to be embedded into plain text, it will also be necessary to establish the base direction for the injected text if different from its surrounding context, and isolate it to avoid spillover effects with adjacent text. Note that RLM is not adequate to establish the base direction for a run of text – the consumer will need to use the paired control characters. Ideally that would be RLI/LRI/FSI...PDI, since they isolate, however these are new Unicode characters and not yet widely supported. The alternative is RLE/LRE...PDF, but that is discouraged by the Unicode Standard, because it doesn't eliminate spillover effects.

+
+
+ +