Foreword
This document is part of the Metanorma specifications series that defines requirements for document rendering.
Introduction
East Asian languages, particularly Chinese, Japanese, and Korean (CJK), have a long history of vertical text layout where text flows from top to bottom and columns are arranged from right to left. This traditional layout remains important in modern publishing, especially for literary works, traditional documents, and designs emphasizing cultural aesthetics.
While modern CJK publishing often uses horizontal text layout similar to Western languages, vertical layout continues to be essential for:
Traditional literary works
Classical texts
Newspaper layouts
Artistic and design applications
Cultural and historical documents
Religious texts
Certificates and formal documents
Metanorma, as a standards document processing system, supports both horizontal and vertical text layouts to meet the needs of international standardization communities. This capability is particularly important for standards organizations in East Asian regions where vertical text layout is frequently required.
1. Scope
This document specifies the requirements for Metanorma content renderers to implement character conversion and transformation when rendering text in vertical layout. It defines:
Character mappings between horizontal and vertical forms
Transformation rules for characters without dedicated vertical forms
Implementation requirements for vertical text rendering
Conformance criteria for Metanorma vertical layout support
2. Normative references
There are no normative references in this document.
3. Terms and definitions
For the purposes of this document, the following terms and definitions apply.
3.1. vertical text layout
text layout where characters are laid out vertically, typically from top to bottom with multiple columns arranged from right to left
3.2. glyph transformation
modification of a character’s glyph when displayed in vertical text layout
3.3. vertical presentation form
dedicated Unicode character representing the vertical form of a horizontal character
3.4. typographic transformation
modification of a character’s appearance without using a dedicated vertical form character
4. Technical background
4.1. Vertical text layout in CJK publishing
Vertical text layout has been the traditional format for East Asian documents for over two millennia. Modern digital publishing systems must support both vertical and horizontal layouts to maintain cultural continuity while embracing contemporary publishing needs.
4.2. Metanorma vertical layout support
Metanorma implements vertical layout support through:
Automatic detection of document language and script
Application of appropriate layout rules based on document type and context
Character transformation according to Unicode standards
Support for mixed horizontal and vertical content
NOTE the default type of layout applied depends on the flavor and document type.
5. Implementation requirements
5.1. General principles
A conforming Metanorma renderer shall:
Support automatic conversion between horizontal and vertical forms of characters
Implement correct character transformations as specified in this document
Maintain proper text flow and alignment in vertical layout
Handle mixed-direction text appropriately
Support vertical forms of punctuation marks and symbols
5.2. Character transformation categories
5.2.1. Characters with dedicated vertical forms that can’t be achieved through rotation the character
| Horizontal Half-width | Horizontal Full-width | Vertical Form | Implementation Instructions |
|---|---|---|---|
| - | U+3001 IDEOGRAPHIC COMMA (、) | U+FE11 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA (︑) | - |
| - | U+FE50 SMALL COMMA (﹐) | U+FE10 PRESENTATION FORM FOR VERTICAL COMMA (︐) | - |
| - | U+FE51 SMALL IDEOGRAPHIC COMMA (﹑) | U+FE11 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA (︑) | - |
| - | U+FF0C FULLWIDTH COMMA (,) | U+FE10 PRESENTATION FORM FOR VERTICAL COMMA (︐) | - |
| - | U+FF1A FULLWIDTH COLON (:) | U+FE13 PRESENTATION FORM FOR VERTICAL COLON (︓) | - |
| - | U+FF1B FULLWIDTH SEMICOLON (;) | U+FE14 PRESENTATION FORM FOR VERTICAL SEMICOLON (︔) | - |
| - | U+FF01 FULLWIDTH EXCLAMATION MARK (!) | U+FE15 PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK (︕) | - |
| - | U+FF1F FULLWIDTH QUESTION MARK (?) | U+FE16 PRESENTATION FORM FOR VERTICAL QUESTION MARK (︖) | - |
5.2.2. Brackets and parentheses for vertical layout
| Horizontal Half-width | Horizontal Full-width | Vertical Form | Implementation Instructions |
|---|---|---|---|
| U+0028 LEFT PARENTHESIS (() | U+FF08 FULLWIDTH LEFT PARENTHESIS (() | U+FE35 PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS (︵) | Rotate 90° clockwise |
| U+0029 RIGHT PARENTHESIS ()) | U+FF09 FULLWIDTH RIGHT PARENTHESIS ()) | U+FE36 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS (︶) | Rotate 90° clockwise |
| - | U+FE59 SMALL LEFT PARENTHESIS (﹙) | - | Rotate 90° clockwise |
| - | U+FE5A SMALL RIGHT PARENTHESIS (﹚) | - | Rotate 90° clockwise |
| - | U+FF5F FULLWIDTH LEFT WHITE PARENTHESIS (⦅) | - | Rotate 90° clockwise |
| - | U+FF60 FULLWIDTH RIGHT WHITE PARENTHESIS (⦆) | - | Rotate 90° clockwise |
| U+007B LEFT CURLY BRACKET ({) | U+FF5B FULLWIDTH LEFT CURLY BRACKET ({) | U+FE37 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET (︷) | Rotate 90° clockwise |
| U+007D RIGHT CURLY BRACKET (}) | U+FF5D FULLWIDTH RIGHT CURLY BRACKET (}) | U+FE38 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET (︸) | Rotate 90° clockwise |
| - | U+FE5B SMALL LEFT CURLY BRACKET (﹛) | - | Rotate 90° clockwise |
| - | U+FE5C SMALL RIGHT CURLY BRACKET (﹜) | - | Rotate 90° clockwise |
| - | U+3014 LEFT TORTOISE SHELL BRACKET (〔) | U+FE39 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET (︹) | Rotate 90° clockwise |
| - | U+3015 RIGHT TORTOISE SHELL BRACKET (〕) | U+FE3A PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET (︺) | Rotate 90° clockwise |
| - | U+3018 LEFT WHITE TORTOISE SHELL BRACKET (〘) | - | Rotate 90° clockwise |
| - | U+3019 RIGHT WHITE TORTOISE SHELL BRACKET (〙) | - | Rotate 90° clockwise |
| - | U+FE5D SMALL LEFT TORTOISE SHELL BRACKET (﹝) | - | Rotate 90° clockwise |
| - | U+FE5E SMALL RIGHT TORTOISE SHELL BRACKET (﹞) | - | Rotate 90° clockwise |
| - | U+3010 LEFT BLACK LENTICULAR BRACKET (【) | U+FE3B PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET (︻) | Rotate 90° clockwise |
| - | U+3011 RIGHT BLACK LENTICULAR BRACKET (】) | U+FE3C PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET (︼) | Rotate 90° clockwise |
| - | U+300A LEFT DOUBLE ANGLE BRACKET (《) | U+FE3D PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET (︽) | Rotate 90° clockwise |
| - | U+300B RIGHT DOUBLE ANGLE BRACKET (》) | U+FE3E PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET (︾) | Rotate 90° clockwise |
| U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) | U+300C LEFT CORNER BRACKET (「) | U+FE41 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET (﹁) | Rotate 90° clockwise |
| U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) | U+300D RIGHT CORNER BRACKET (」) | U+FE42 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET (﹂) | Rotate 90° clockwise |
| - | U+300E LEFT WHITE CORNER BRACKET (『) | U+FE43 PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET (﹃) | Rotate 90° clockwise |
| - | U+300F RIGHT WHITE CORNER BRACKET (』) | U+FE44 PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET (﹄) | Rotate 90° clockwise |
| U+005B LEFT SQUARE BRACKET ([) | U+FF3B FULLWIDTH LEFT SQUARE BRACKET ([) | U+FE47 PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET (﹇) | Rotate 90° clockwise |
| U+005D RIGHT SQUARE BRACKET (]) | U+FF3D FULLWIDTH RIGHT SQUARE BRACKET (]) | U+FE48 PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET (﹈) | Rotate 90° clockwise |
| - | U+2329 LEFT-POINTING ANGLE BRACKET (〈) | - | Rotate 90° clockwise |
| - | U+232A RIGHT-POINTING ANGLE BRACKET (〉) | - | Rotate 90° clockwise |
| - | U+3008 LEFT ANGLE BRACKET (〈) | U+FE3F PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET (︿) | Rotate 90° clockwise |
| - | U+3009 RIGHT ANGLE BRACKET (〉) | U+FE40 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET (﹀) | Rotate 90° clockwise |
| - | U+3016 LEFT WHITE LENTICULAR BRACKET (〖) | U+FE17 PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET (︗) | Rotate 90° clockwise |
| - | U+3017 RIGHT WHITE LENTICULAR BRACKET (〗) | U+FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET (︘) | Rotate 90° clockwise |
| - | U+301A LEFT WHITE SQUARE BRACKET (〚) | - | Rotate 90° clockwise |
| - | U+301B RIGHT WHITE SQUARE BRACKET (〛) | - | Rotate 90° clockwise |
5.2.3. Special marks and symbols for vertical layout
| Horizontal Half-width | Horizontal Full-width | Vertical Form | Implementation Instructions |
|---|---|---|---|
| - | U+3002 IDEOGRAPHIC FULL STOP (。) | - | Rotate 180° |
| - | U+FE52 SMALL FULL STOP (﹒) | - | Rotate 180° |
| - | U+FF0E FULLWIDTH FULL STOP (﹒) | - | Rotate 180° |
| - | U+3003 DITTO MARK (〃) | - | No rotation needed |
| - | U+301C WAVE DASH (〜) | - | Rotate 90° clockwise |
| - | U+3030 WAVY DASH (〰) | - | Rotate 90° clockwise |
| - | U+FF5E FULLWIDTH TILDE (~) | - | Rotate 90° clockwise |
| - | U+301D REVERSED DOUBLE PRIME QUOTATION MARK (〝) | - | Special positioning (see UTR #50) |
| - | U+301E DOUBLE PRIME QUOTATION MARK (〞) | - | Special positioning (see UTR #50) |
| - | U+301F LOW DOUBLE PRIME QUOTATION MARK (〟) | - | Special positioning (see UTR #50) |
| U+FF65 HALFWIDTH KATAKANA MIDDLE DOT (・) | U+30FB KATAKANA MIDDLE DOT (・) | - | No rotation needed |
| - | U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK (ー) | - | Rotate 90° clockwise |
| - | U+309B KATAKANA-HIRAGANA VOICED SOUND MARK (゛) | - | Special positioning (see UTR #50) |
| - | U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜) | - | Rotate 180° |
| - | U+30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN (゠) | - | Rotate 90° clockwise |
| - | U+FF3F FULLWIDTH LOW LINE (_) | - | Rotate 90° clockwise |
| - | U+FF5C FULLWIDTH VERTICAL LINE (|) | - | Rotate 90° clockwise |
| - | U+FFE3 FULLWIDTH MACRON ( ̄) | - | Rotate 90° clockwise |
5.3. Rendering requirements
5.3.1. Character conversion
The renderer shall:
Use dedicated vertical presentation forms when available and the vertical forms can’t be easily achieved through rotation the character
NOTE: Using the glyphs that the vertical forms are easily achieved through rotation can preserve the copy-paste text into the text editor in horizontal mode, and the easy searching also.Apply appropriate rotations for characters without vertical forms
Implement special positioning rules for specific characters
Maintain correct spacing and alignment in vertical layout
5.3.2. Text flow
The renderer shall:
Arrange text in top-to-bottom columns
Order columns from right to left
Handle mixed horizontal and vertical content appropriately
Maintain proper line breaks and justification
5.3.3. Special cases
5.3.3.1. Mixed-direction text
For text containing both horizontal and vertical elements, the renderer shall:
Maintain proper orientation for each text segment
Ensure correct alignment and spacing between different directions
Handle embedded horizontal elements within vertical text appropriately
5.3.3.2. Numerical content
For numerical content in vertical text, the renderer shall:
Keep multi-digit numbers in horizontal orientation
Maintain proper alignment with surrounding vertical text
Handle mixed alphanumeric content appropriately
6. Conformance criteria
6.1. Basic conformance
A conforming implementation shall:
Support all character transformations specified in this document
Implement correct text flow for vertical layout
Handle mixed-direction text appropriately
6.2. Extended conformance
A conforming implementation should:
Support advanced typography features
Handle complex layout scenarios
Provide fallback mechanisms for unsupported characters
7. Testing and verification
7.1. Character transformation testing
Implementations shall be tested against:
Correct mapping of characters to vertical forms
Proper rotation of transformed characters
Accurate positioning of special characters
7.2. Layout testing
Implementations shall be verified for:
Correct column ordering and flow
Proper handling of mixed-direction text
Accurate spacing and alignment
Bibliography
[1] UTR #50, Unicode Technical Report #50: Unicode Vertical Text Layout
[2] Unicode, The Unicode Standard, Version 15.1
[3] ISO/IEC 10646:2020, International Organization for Standardization (committee). Information technology — Universal coded character set (UCS). Sixth edition. 2020. Geneva: International Organization for Standardization and International Electrotechnical Commission. https://www.iso.org/standard/76835.html.