การออกแบบตัวอักษร

อักขระช่องว่าง

อักขระที่แทนช่องว่างในแนวนอนหรือแนวตั้งแต่ไม่มี glyph ที่มองเห็นได้ Unicode กำหนดอักขระ whitespace มากกว่า 17 ตัวที่มีความกว้างและพฤติกรรมการขึ้นบรรทัดใหม่แตกต่างกัน

· Updated

What is Whitespace?

Whitespace refers to any character that represents horizontal or vertical blank space without producing a visible mark. The term covers a wide family of characters — from the ordinary space (U+0020) you type with the spacebar, to tab, newline, carriage return, and a rich set of Unicode-specific space characters with precise typographic widths.

In text processing, whitespace characters are fundamental delimiters. In typography, different whitespace characters carry specific semantic meanings about the size and nature of the blank space they represent.

The Unicode Whitespace Family

Unicode defines approximately 25 characters with whitespace properties. The most important are:

Character Unicode Name Width
U+0020 Space Standard word space
U+00A0 No-Break Space Standard (no line break)
U+2002 En Space 1 en (½ em)
U+2003 Em Space 1 em
U+2004 Three-Per-Em Space ⅓ em
U+2005 Four-Per-Em Space ¼ em
U+2006 Six-Per-Em Space ⅙ em
U+2007 Figure Space Width of a digit
U+2008 Punctuation Space Width of a period
U+2009 Thin Space ⅕ em
U+200A Hair Space 1/24 em (approx)
\t U+0009 Character Tabulation (Tab) Variable (tab stop)
\n U+000A Line Feed Vertical
\r U+000D Carriage Return Vertical
U+3000 Ideographic Space 1 full-width em (CJK)

Control Characters vs. Space Characters

Whitespace splits into two categories: - Space characters: primarily horizontal, create horizontal gaps - Control characters: include line terminators (LF, CR, CRLF, LS, PS) that break lines and create vertical space

Line separator (U+2028) and paragraph separator (U+2029) are Unicode-specific line terminators that some parsers recognize. JavaScript template literals, for example, treat both as newlines.

Whitespace in Programming

Whitespace handling varies significantly across languages and contexts:

# Python: indentation is syntax
if True:
    print("This indent matters")

# Python string whitespace
import re
text = "hello\u2003world"          # em space
re.split(r'\s+', text)             # ['hello', 'world'] — \s matches em space
text.split(' ')                    # ['hello\u2003world'] — only splits on U+0020
// JavaScript: \s in regex matches all Unicode whitespace
/\s/.test('\u2003')   // true — em space
/\s/.test('\u3000')   // true — ideographic space
/* CSS white-space property controls whitespace rendering */
p { white-space: normal; }    /* collapse and wrap (default) */
p { white-space: pre; }       /* preserve all whitespace */
p { white-space: nowrap; }    /* no line wrapping */
p { white-space: pre-wrap; }  /* preserve, but allow wrapping */

Ideographic Space in CJK Typography

The ideographic space (U+3000, ) is a full-width space used in Chinese, Japanese, and Korean text. Its width matches a full CJK character (one em in a monospace CJK context). It is visually distinct from a standard space and matters for alignment in vertically set or grid-aligned CJK typography.

Quick Facts

Property Value
Standard space U+0020
Non-breaking space U+00A0
Thin space U+2009 (⅕ em)
Hair space U+200A (1/24 em)
Em space U+2003
Ideographic space (CJK) U+3000
Unicode line separator U+2028
Unicode paragraph separator U+2029
\s in most regex engines Matches all Unicode whitespace

คำศัพท์ที่เกี่ยวข้อง

เพิ่มเติมใน การออกแบบตัวอักษร

CSS unicode-range

CSS @font-face descriptor specifying which Unicode code points a font should cover. …

Em / En (หน่วยวรรณศิลป์)

Em: ความกว้างเท่ากับขนาดฟอนต์ En: ครึ่งหนึ่งของ em ใช้กำหนดความกว้างของ em dash, em space, en space …

Font Fallback

The mechanism by which a rendering engine substitutes glyphs from a secondary …

OpenType

Modern font format developed by Microsoft and Adobe supporting up to 65,535 …

RTL (Right-to-Left)

ทิศทางของข้อความที่อักขระไหลจากขวาไปซ้าย ใช้กับภาษาอาหรับ ฮีบรู Thaana และอักษรอื่นๆ ต้องใช้อัลกอริทึม Bidirectional เพื่อแสดงผลอย่างถูกต้อง

Web Fonts

Fonts downloaded by the browser to render text, declared via CSS @font-face. …

การปรับระยะอักษร

การปรับระยะห่างระหว่างคู่อักขระเฉพาะเพื่อความสวยงามทางสายตา (เช่น AV, To, LT) เป็นคุณสมบัติของฟอนต์ ไม่ใช่แนวคิด Unicode แต่มีผลต่อการแสดงผลข้อความ Unicode

จุดไข่ปลา

U+2026 HORIZONTAL ELLIPSIS (…) อักขระเดี่ยวที่แทนที่จุดสามจุด ถูกต้องตามหลักการพิมพ์และนับเป็น 1 อักขระแทนที่จะเป็น 3

ช่องว่างที่ไม่ตัดบรรทัด

U+00A0 ช่องว่างที่ป้องกันการขึ้นบรรทัดใหม่ที่ตำแหน่งนั้น HTML:   ใช้ระหว่างตัวเลขและหน่วย (100 km) ในชื่อเฉพาะ (Mr. Smith) และหลังคำย่อ

ตัวพิมพ์ใหญ่ขนาดเล็ก

รูปแบบตัวพิมพ์ใหญ่ที่มีความสูงเท่ากับตัวพิมพ์เล็ก CSS: font-variant: small-caps Unicode ยังมีตัวอักษรพิมพ์ใหญ่ขนาดเล็กจริงใน Latin Extended (ᴀ–ᴢ)