This document describes or points to requirements for the layout and presentation of text in languages that use the Adlam script. The target audience is developers of Web standards and technologies, such as HTML, CSS, Mobile Web, Digital Publications, and Unicode, as well as implementers of web browsers, ebook readers, and other applications that need to render Adlam text.

This document describes the basic requirements for Adlam script layout and text support on the Web and in eBooks. These requirements provide information for Web technologies such as CSS, HTML and digital publications about how to support users of Adlam script languages. Currently the document focuses on the Adlam script as used for Fula. The information here is developed in conjunction with a document that summarises gaps in support on the Web for Adlam.

The editor's draft of this document is being developed by the African Layout Task Force, part of the W3C Internationalization Interest Group. It is published by the Internationalization Working Group. The end target for this document is a Working Group Note.

To make it easier to track comments, please raise separate issues or emails for each comment, and point to the section you are commenting on using a URL.

X Some links on this page point to repositories or pages to which information will be added over time. Initially, the link may produce no results, but as issues, tests, etc. are created they will show up.

Introduction

Contributors

The initial version of this document was prepared by Richard Ishida.

See also the GitHub contributors list for the African Language Enablement project, and the discussions related to the Adlam script.

About this document

The aim of this document is to describe the basic requirements for Adlam script layout and text support on the Web and in eBooks. These requirements provide information for Web technologies such as CSS, HTML and digital publications, and for application developers, about how to support users of the Adlam script. The document currently focuses on texts using the Fula language.

Gap analysis

This document is pointed to by a separate document, Adlam Gap Analysis, which describes gaps in support for Adlam on the Web, and prioritises and describes the impact of those gaps on the user.

Wherever an unsupported feature is indentified through the gap analysis process, the requirements for that feature need to be documented. The gap reports will typically point back to this document for more information.

As gaps in support for Adlam are captured, the gaps can be brought to the attention of the relevant spec developer or the browser implementator community. The progress of such work is tracked in the Gap Analysis Pipeline.

This document should contain no reference to a particular technology. For example, it should not say "CSS does/doesn't do such and such", and it should not describe how a technology, such as CSS, should implement the requirements. It is technology agnostic, so that it will be evergreen, and it simply describes how the script works. The gap analysis document is the appropriate place for all kinds of technology-specific information.

Other related resources

To complement any content authored specifically for this document, the sections in the document also point to related, external information, tests, GitHub discussions, etc.

The document Language enablement index points to this document and others, and provides a central location for developers and implementers to find information related to various scripts.

The W3C also has a repository with discussion threads related to the Adlam script, including requests from developers to the user community for information about how scripts/languages work, and a notification system that tracks issues in W3C working groups related to the Adlam script. See a list of unresolved questions for Adlam experts. Each section below points to related discussions. See also the repository home page.

Adlam Script Overview

The Adlam script is an alphabet, ie. a writing system in which both consonants and vowels are indicated.

Modern Adlam can be written using a subset of the letters available in the Adlam Unicode block. The remainder are used for writing Todo, Sibe, and Manchu, or for writing foriegn words, especially in Tibetan and Sanskrit.

Adlam text runs top to bottom in vertical lines and (unusually) the lines flow left to right.

The script is cursive, ie. letters in a word are joined. All letters join both on the left and right.

Words are separated by spaces, but also contain narrow spaces that precede suffixes and may produce shaping differences to the surrounding letters. These are part of the word, and the parts on either side should not be separated.

Modern Adlam uses 16 basic consonant letters and 11 more for representing foreign sounds.

In the Traditional Adlam alphabet vowels are written using 8 vowel letters, including one for foreign sounds.

Adlam has separate code points for each sound in Adlam, but many of these look indistinguishable from each other when rendered. This creates difficulties for novices to reproduce Adlam text without access to the source..

Vowel reduction is a significant feature of Adlam. Non-initial short vowels are reduced to vestiges or to zero, and non-initial long vowels in the orthography are reduced to short vowel length.

Vowel harmony is another key feature, grouping vowels in a way that indicates a front or back position for the tongue root (ATR).

The script is monocameral.

There is a set of Adlam digits.

All topics

Text direction

Bidirectional text

Glyph shaping & positioning

Fonts & font styles

Context-based shaping & positioning

Cursive text

Letterform slopes, weights, & italics

Case & other character transforms

Typographic units

Characters & encoding

Grapheme/word segmentation & selection

Punctuation & inline features

Phrase & section boundaries

Quotations & citations

Emphasis & highlighting

Abbreviation, ellipsis & repetition

Inline notes & annotations

Other inline features

Line & paragraph layout

Line breaking & hyphenation

Text alignment & justification

Text spacing

Baselines, line height, etc.

Lists, counters, etc.

Styling initials

Page & book layout

General page layout & progression

Forms & user interaction

Change log