Khmer Script Resources

W3C Group Draft Note

More details about this document
This version:
Latest published version:
Latest editor's draft:
Commit history
Richard Ishida (W3C)
GitHub w3c/sealreq (pull requests, new issue, open issues)


This document points to resources for the layout and presentation of text in languages that use the Khmer script. The target audience includes 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 Khmer text.

Status of This Document

This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at

This document points to resources for Khmer 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 languages written using the Khmer script. The information here is developed in conjunction with a document that summarises gaps where the Web fails to adequately support the Khmer script.

The editor's draft of this document is being developed in the GitHub repository Southeast Asian (sealreq), with contributors from 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.

This document was published by the Internationalization Working Group as a Group Draft Note using the Note track.

Group Draft Notes are not endorsed by W3C nor its Members.

This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

The W3C Patent Policy does not carry any licensing requirements or commitments on this document.

This document is governed by the 03 November 2023 W3C Process Document.

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.

Links that have a gray color led to no content the last time this document was updated. They are still live, however, since relevant content could be added at any time. When the document is updated, links that now point to results will have their live colour restored.

1. Introduction

1.1 Contributors

This document was created by Richard Ishida.

The following people contributed information that was used in preparing this document (in alphabetic order): Ben Mitchell, Danh Hong, Marc Durdin, and Martin Hosken as members of the W3C's Southeast Asia Language Enablement community.

See also the GitHub contributors list for the Southeast Asian Language Enablement project, and the discussions related to the Khmer script.

1.2 About this document

This document points to resources for Khmer script layout and text support on the Web and in eBooks. These resources provide information for developers of Web technologies such as CSS, HTML and digital publications, and for application developers, about how to support languages written using the Khmer script. They include requirements, tests, GitHub discussions, type samples, and more,

The document focuses on typographic layout issues. For a deeper understanding of the Khmer script and how it works see Khmer Orthography Notes, which includes topics such as: Phonology, Vowels, Consonants, Encoding choices, and Numbers.

1.3 Gap analysis

This document should be used alongside a separate document, Khmer Gap Analysis, which describes gaps in language support for users of the Khmer script, and prioritises and describes the impact of those gaps on the user.

Gap reports are brought to the attention of spec and browser implementers, and are tracked via the Gap Analysis Pipeline. (Filter for Khmer script items)

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 Khmer 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 Khmer script. See a list of unresolved questions for Khmer experts. Each section below points to related discussions. See also the repository home page.

2. Khmer Script Overview

The script is an abugida, ie. like most Brahmi-influenced scripts, each consonant carries with it an inherent vowel. The sound following a consonant can be modified by attaching vowel signs to the consonant when writing.

Khmer text runs left to right in horizontal lines. Words are not separated by spaces, however words may be separated by zero-width space characters (ZWSP). Spaces are used as phrase separators.

The orthography is based around, and segmented into, orthographic syllables, which may not match phonological syllables directly.

A key feature of Khmer is that there are a large number of vowel sounds, and only a few vowel signs; and there are a large number of consonant letters for only a small number of consonant sounds. This led to a system where there are generally two consonant signs for a given sound, each belonging to one of two classes (or registers). So to determine the pronunciation of an inherent vowel or a vowel sign one first determines which class of consonant it follows. For example, using the two symbols for the sound k, is kɑː neck, and is kɔː mute. Other factors may also affect the sound, such as stress, vowel harmony, and diacritics.

Clusters of consonant letters are very common at the beginning of a word, but such clusters also occur medially in multisyllable words, and occasionally at the end of a word (though the second consonant at the word end is usually not pronounced). Clusters are indicated by stacked consonants. Subjoined forms are created using an invisible coeng character. Stacks do not span word boundaries.

Word-final consonant sounds (typically 8 consonants and characters) use ordinary code points without an inherent vowel. Because there are no spaces or other word dividers, it is difficult to detect boundaries algorithmically. Two word-final sounds (m and h) can be produced using combining marks.

Khmer has pre-base glyphs and circumgraphs, 2 of which can decompose into multipart vowels. It also has a good number of multipart vowels (made from combinations of vowel signs, and consonants/diacritics). Multipart vowels can involve up to 3 glyphs, but only surround the base consonant(s) on 2 sides.

Standalone vowel sounds are typically written using vowel signs applied to U+17A2 KHMER LETTER QA, but there is also an incomplete set of independent vowels.

3. All topics

4. Text direction

Khmer is written horizontally, left to right.

5. Glyph shaping & positioning

5.1 Fonts & font styles

5.2 Context-based shaping & positioning

5.3 Letterform slopes, weights, & italics

6. Typographic units

6.1 Characters & encoding

6.2 Grapheme/word segmentation & selection

7. Punctuation & inline features

7.1 Phrase & section boundaries

7.2 Quotations & citations

7.3 Emphasis & highlighting

7.4 Abbreviation, ellipsis & repetition

7.5 Inline notes & annotations

7.6 Text decoration & other inline features

8. Line & paragraph layout

8.1 Line breaking & hyphenation

8.2 Text alignment & justification

8.3 Text spacing

8.4 Baselines, line height, etc.

8.5 Lists, counters, etc.

8.6 Styling initials

9. Page & book layout


A. Change log