Tracking คือการเปลี่ยนแปลงระยะห่างระหว่างตัวอักษรอย่างสม่ำเสมอ在整个ส่วนข้อความที่เลือกไว้ ต่างจาก kerning ซึ่งปรับระยะห่างระหว่างคู่ตัวอักษรเฉพาะ Tracking ใช้กับทุกตัวอักษรเท่าๆ กัน: tracking แบบบวกจะเพิ่มระยะห่าง tracking แบบลบจะลดระยะห่าง ตามข้อมูลจาก MDN Web Docs ในอินเทอร์เฟซเว็บ tracking ถูก implement ผ่านคุณสมบัติ CSS letter-spacing ซึ่งรองรับหน่วยความยาวทุกประเภทและสืบทอดไปยังองค์ประกอบลูก
สาระสำคัญ
Tracking คือการเปลี่ยนแปลงระยะห่างระหว่างตัวอักษรที่ใช้อย่างสม่ำเสมอกับทุกตัวอักษรในบล็อกข้อความ ต่างจาก kerning ที่แต่ละคู่ตัวอักษรได้รับการปรับแต่งเฉพาะตามตาราง kerning ของฟอนต์ tracking ถูกกำหนดด้วยค่าตัวเลขเดียวสำหรับทั้งช่วง Tracking แบบบวกจะเพิ่มระยะห่าง (การกระจาย) tracking แบบลบจะลดระยะห่าง (การบีบอัด)
คำนี้มีที่มาจากการพิมพ์แบบโลหะ ซึ่งระยะห่างระหว่างตัวอักษรถูกรับด้วยระยะทางกายภาพระหว่างตัวพิมพ์ ในการพิมพ์ดิจิทัล tracking ถูกใช้บนตาราง kerning: ฟอนต์จะใช้คู่ kerning ในตัวก่อน จากนั้นระบบจะเพิ่ม tracking ที่สม่ำเสมอให้กับทุกตัวอักษร ระยะห่างผลลัพธ์ = kerning + tracking ซึ่งสำคัญเมื่อบีบอัดข้อความอย่างรุนแรง
หน่วยวัด: tracking สามารถกำหนดเป็นหน่วยสัมบูรณ์ (จุด, พิกเซล, มิลลิเมตร) และหน่วยสัมพัทธ์ (em, เปอร์เซ็นต์ของขนาดฟอนต์) ในการพัฒนามือถือ นิยมกำหนด tracking เป็นจุด (iOS) หรือ sp (Android) เป็นค่าสัมบูรณ์ ในเว็บใช้ em เป็นค่าสัมพัทธ์ หน่วยสัมพัทธ์ดีกว่าสำหรับ accessibility เนื่องจากปรับขนาดเมื่อผู้ใช้เปลี่ยนขนาดฟอนต์
ความสับสนระหว่าง tracking และ kerning เป็นหนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดของนักออกแบบและนักพัฒนามือใหม่ Kerning ทำงานในระดับจุลภาค — ปรับระยะห่างระหว่างคู่ตัวอักษรเฉพาะ (AV, Te, To) ตามรูปทรงของมัน Tracking ทำงานในระดับมหภาค — เลื่อนทุกตัวอักษรในส่วนอย่างสม่ำเสมอ โดยไม่พิจารณารูปทรง
เอฟเฟกต์ทางสายตา: เมื่อใช้ kerning ระยะห่างระหว่างคู่ตัวอักษรต่างๆ จะแตกต่างกัน — ระหว่าง A และ V น้อยกว่าระหว่าง A และ I เพราะรูปทรงของตัวอักษรชดเชยซึ่งกันและกัน เมื่อใช้ tracking ระยะห่างทั้งหมดเท่ากัน — ระหว่าง A และ V, A และ I, T และ o — ทุกที่มีการเลื่อนเท่ากัน ทำให้ tracking เป็นเครื่องมือปรับระดับโลก และ kerning เป็นเครื่องมือปรับแต่งละเอียด
การใช้ร่วมกัน: ในการพิมพ์อินเทอร์เฟซ tracking และ kerning ใช้ร่วมกัน ฟอนต์มีตาราง kerning สำหรับการปรับแต่งพื้นฐาน และนักพัฒนาเพิ่ม tracking สำหรับการจัดแต่งหรือ accessibility ตาราง kerning ถูกใช้ก่อน จากนั้นจึงเพิ่ม tracking ทับ เมื่อใช้ tracking แบบลบ (การบีบอัด) คู่ kerning อาจสร้างการซ้อนทับที่ไม่พึงประสงค์ — ควรตรวจสอบคู่ที่มีปัญหา
| ลักษณะ | Kerning | Tracking |
|---|---|---|
| ขอบเขต | คู่ตัวอักษร | ข้อความทั้งหมด |
| ค่า | เฉพาะสำหรับแต่ละคู่ | ค่าเดียวสำหรับทุกตัวอักษร |
| เป้าหมาย | ความสม่ำเสมอทางสายตา | การปรับความหนาแน่น |
| การสังเกต | ในหัวเรื่องตั้งแต่ 24pt | ทุกขนาดตัวอักษร |
| iOS attribute | .kern (nil หรือ 0) | .kern (ค่าตัวเลข) |
Tracking แบบบวก เพิ่มระยะห่างระหว่างตัวอักษร ใช้เพื่อปรับปรุงความอ่านง่ายของข้อความขนาดเล็ก (10-13pt) ซึ่งตัวอักษรจะมองเห็นติดกันเมื่อใช้ระยะห่างมาตรฐาน นอกจากนี้ยังใช้ใน accessibility สำหรับผู้ใช้ที่มี dyslexia — ระยะห่างระหว่างตัวอักษรที่เพิ่มขึ้นช่วยให้จดจำตัวอักษรได้ง่ายขึ้น ค่าทั่วไป: 0.3-1pt สำหรับ iOS, 0.02-0.05em สำหรับเว็บ
Tracking แบบลบ ลดระยะห่างระหว่างตัวอักษร ใช้ในหัวเรื่อง (ตั้งแต่ 24pt) และข้อความเน้น ซึ่งการจัดวางแบบกระชับดูเป็นหนึ่งเดียวและทันสมัย ขนาดตัวอักษรใหญ่ทนต่อการบีบอัดได้ดีเพราะระยะห่างระหว่างตัวอักษรดูใหญ่ ค่าทั่วไป: ตั้งแต่ -0.3 ถึง -1pt ข้อจำกัด: เมื่อ tracking น้อยกว่า -1pt ตัวอักษรอาจทับซ้อนกัน โดยเฉพาะในคู่ที่มีองค์ประกอบยื่น (fi, fj, TT)
กฎเชิงประจักษ์: สำหรับแต่ละขนาดตัวอักษรมีช่วง tracking ที่ยอมรับได้ ยิ่งฟอนต์ใหญ่เท่าไร ยิ่งต้องการ tracking น้อยลงเพื่อความอ่านง่ายที่เหมาะสม สูตร: tracking ที่เหมาะสม ≈ font-weight * 0.01 - font-size * 0.001 สำหรับฟอนต์หนา (weight 700) 16pt: 700 * 0.01 - 16 * 0.001 = 6.84 ซึ่งเมื่อปรับตามฟอนต์แล้วให้ประมาณ 0.5pt ของ tracking แบบบวก
Body text (14-18pt): ไม่ต้องการ tracking หรือใช้ tracking แบบบวกเล็กน้อย 0.1-0.3pt ฟอนต์มืออาชีพมีระยะห่างที่เหมาะสมสำหรับข้อความหลักอยู่แล้ว การเปลี่ยนแปลง tracking ของ body text ควรมีเหตุผลจากดีไซน์หรือข้อกำหนด accessibility หัวเรื่อง (20-36pt): สามารถใช้ tracking แบบลบตั้งแต่ -0.3 ถึง -0.8pt ขึ้นอยู่กับฟอนต์และน้ำหนัก ตัวพิมพ์ใหญ่ทั้งหมด (ALL CAPS): แนะนำ tracking แบบบวก 0.5-2pt เนื่องจากตัวพิมพ์ใหญ่ใน ALL CAPS จะมองเห็นติดกันโดยไม่มีระยะห่างเพิ่มเติม
ลักษณะเฉพาะของฟอนต์: ฟอนต์ประเภท grotesque geometry (Helvetica, Inter, SF Pro) ทนต่อ tracking แบบลบได้ดีกว่าฟอนต์ serif แบบเก่า (Times, Georgia, PT Serif) ฟอนต์ serif มีเชิงที่สร้างการเชื่อมต่อทางสายตาระหว่างตัวอักษร และการบีบอัดทำให้ข้อความอ่านไม่ได้ สำหรับฟอนต์ serif แนะนำเฉพาะ tracking แบบบวกเท่านั้น
บน iOS tracking ถูก implement ผ่าน attribute .kern เดียวกันใน NSAttributedString กับ kerning แต่มีความแตกต่าง: สำหรับ tracking ระบุค่าตัวเลขที่ไม่ใช่ nil nil — kerning เริ่มต้น (จากตารางฟอนต์), 0 — ปิด kerning, ตัวเลขอื่นใด — tracking ที่เพิ่มเหนือตาราง kerning หมายความว่าเมื่อตั้งค่า .kern = 2 ทุกตัวอักษรจะได้รับระยะห่างระหว่างตัวอักษร +2pt เหนือคู่ kerning ในตัว
let text = "Heading with tracking"
let attributedString = NSMutableAttributedString(string: text)
// การติดตามเชิงบวก +0.8pt
attributedString.addAttribute(
.kern,
value: 0.8,
range: NSRange(
location: 0,
length: text.count
)
)
// UILabel พร้อมการติดตาม
label.attributedText = attributedString
SwiftUI ใช้ modifier .tracking() สำหรับ Text ซึ่งรับ CGFloat ต่างจาก UIKit tracking ของ SwiftUI ใช้กับข้อความทั้งหมดภายใน modifier และไม่สามารถใช้บางส่วนได้โดยไม่แบ่งเป็นหลาย Text-blocks SwiftUI จัดการการรวมกันของ kerning และ tracking โดยอัตโนมัติ โดยใช้ tracking เหนือตาราง kerning ของฟอนต์
Android ใช้คุณสมบัติ letterSpacing ใน TextView ซึ่งกำหนดเป็น em (ตัวคูณเทียบกับขนาดฟอนต์) ค่า 0 — tracking เริ่มต้น, 0.05 — เพิ่ม 5% ของ em, -0.02 — ลดลง ใน Android letterSpacing ทำงานเป็น tracking (สม่ำเสมอสำหรับทุกตัวอักษร) และตาราง kerning ของฟอนต์ถูกใช้โดยอัตโนมัติที่ระดับเรนเดอร์ Minikin
// ในเลย์เอาต์ XML
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text with tracking"
android:letterSpacing="0.08"
android:textSize="12sp" />
// โดยการเขียนโปรแกรมใน Kotlin
val textView: TextView = findViewById(R.id.smallText)
textView.letterSpacing = 0.08f
Compose ใน Android ใช้พารามิเตอร์ letterSpacing ใน TextStyle ซึ่งกำหนดเป็น sp เช่น TextStyle(letterSpacing = 0.5.sp) ให้ tracking 0.5 sp ต่างจากแนวทาง XML Compose อนุญาตให้รวม letterSpacing กับพารามิเตอร์การพิมพ์อื่นๆ ในออบเจกต์ TextStyle เดียว ซึ่งทำให้สร้างระบบดีไซน์ได้ง่ายขึ้น
ในเว็บ tracking ถูก implement ผ่านคุณสมบัติ CSS letter-spacing ซึ่งรับหน่วยความยาวใดๆ หรือคำสำคัญ normal ค่า normal เท่ากับ 0 (ไม่มีระยะห่างระหว่างตัวอักษรเพิ่มเติม) คุณสมบัตินี้สืบทอดได้ รองรับค่าลบ และสามารถทำ animation ได้ ตาม CSS Specification letter-spacing ถูกใช้หลังจากตาราง kerning ของฟอนต์
/* Positive tracking for small text */
.caption {
font-size: 11px;
letter-spacing: 0.03em;
}
/* Negative tracking for headings */
h1 {
font-size: 32px;
font-weight: 700;
letter-spacing: -0.02em;
}
/* Tracking for uppercase */
.uppercase-label {
text-transform: uppercase;
letter-spacing: 0.08em;
}
em vs px: letter-spacing ใน em ปรับขนาดเมื่อ font-size เปลี่ยนแปลง และดีกว่าสำหรับ accessibility px ไม่ปรับขนาดและอาจทำให้ไม่สอดคล้องเมื่อข้อความถูกขยายโดยเบราว์เซอร์ (Zoom) คำแนะนำ: ใช้ em เสมอสำหรับ letter-spacing ข้อยกเว้น — กรณีที่ tracking ต้องคงที่โดยไม่ขึ้นกับขนาดฟอนต์ เช่น ในโลโก้
Animation ของ letter-spacing: คุณสมบัตินี้รองรับ CSS transitions และ animations ซึ่งช่วยให้สร้างเอฟเฟกต์การปรากฏของข้อความอย่างนุ่มนวล Animation จาก letter-spacing: -0.05em ถึง letter-spacing: 0.01em เมื่อโหลดหัวเรื่องเป็นเทคนิคยอดนิยมในอินเทอร์เฟซสมัยใหม่ ประสิทธิภาพ: animation ของ letter-spacing ทำให้เกิด reflow (การคำนวณ layout ใหม่) เนื่องจากเปลี่ยนความกว้างของข้อความ ใช้ transform และ opacity สำหรับ animation ที่มีประสิทธิภาพสูงเมื่อเป็นไปได้
Tracking ส่งผลโดยตรงต่อ ความอ่านง่ายของข้อความ สำหรับผู้ใช้ที่มีข้อจำกัดทางสายตาและ dyslexia WCAG 2.2 Guideline 1.4.12 (Text Spacing) กำหนดให้ข้อความต้องไม่สูญเสียเนื้อหาเมื่อเพิ่มระยะห่างระหว่างตัวอักษร ระหว่างบรรทัด และระหว่างย่อหน้าถึงค่าที่กำหนด letter-spacing ต้องทนต่อการเพิ่มขึ้นถึง 0.12em โดยไม่ตัดเนื้อหาหรือซ้อนทับองค์ประกอบ
Dyslexia: งานวิจัยของ British Dyslexia Association แสดงให้เห็นว่าการเพิ่ม letter-spacing ถึง 0.12em ช่วยเพิ่มความเร็วในการอ่านของผู้ใช้ที่มี dyslexia ได้ 10-15% อย่างไรก็ตามขึ้นอยู่กับแต่ละบุคคล — ผู้ใช้บางคนชอบระยะห่างมาตรฐาน iOS และ Android มีการตั้งค่า accessibility ของระบบสำหรับเพิ่มระยะห่างระหว่างตัวอักษร ซึ่งแอปควรให้เกียรติ
กฎสำหรับนักพัฒนา: อย่าใช้ fixed widths/heights ที่อาจเสียหายเมื่อเพิ่ม letter-spacing หลีกเลี่ยง overflow: hidden บนคอนเทนเนอร์ที่มีข้อความโดยไม่ตรวจสอบ accessibility ทดสอบอินเทอร์เฟซด้วย letter-spacing ที่เพิ่มขึ้นถึง 0.12em บนทุกหน้าจอ หากดีไซน์เสียหาย ให้ปรับโครงสร้างหน้า ไม่ใช่ละเลย accessibility
การรองรับแพลตฟอร์ม: iOS เพิ่ม letter-spacing โดยอัตโนมัติเมื่อเปิดใช้ Larger Text ในการตั้งค่าการเข้าถึง หากใช้ UIFont.preferredFont Android มีตัวเลือก類似กันผ่าน FontScale นักพัฒนาไม่ควรปิดการตั้งค่าเหล่านี้ สถานการณ์ทดสอบ: เปิดขนาดข้อความสูงสุดในการตั้งค่าอุปกรณ์และตรวจสอบว่า tracking ไม่ทำให้ layout ของอินเทอร์เฟซเสียหาย
คำถามที่พบบ่อย
บน iOS .kern = nil — kerning เริ่มต้นจากตารางฟอนต์ .kern = 0 — ปิด kerning .kern = ตัวเลขใดๆ — tracking ซึ่งเพิ่มเหนือตาราง kerning ใน Android letterSpacing — เป็น tracking เสมอ
สำหรับข้อความตัวพิมพ์ใหญ่ (ALL CAPS) ให้ใช้ tracking แบบบวก 0.05-0.15em ตัวพิมพ์ใหญ่ไม่มีส่วนยื่นและมองเห็นติดกัน บน iOS: .kern = 1-2pt สำหรับตัวพิมพ์ใหญ่ขนาด 14-18pt
ได้ คุณสมบัติ CSS letter-spacing รองรับค่าลบ ค่าต่ำสุดถูกจำกัดโดยเบราว์เซอร์ — โดยประมาณ -0.1em หลังจากนั้นตัวอักษรจะเริ่มซ้อนทับกัน ใช้ tracking แบบลบเฉพาะหัวเรื่องตั้งแต่ 24pt
Tracking ไม่ส่งผล โดยตรงต่อ FPS ขณะเลื่อน อย่างไรก็ตามการเปลี่ยน letter-spacing ใน CSS ทำให้เกิด reflow เนื่องจากความกว้างของบล็อกข้อความเปลี่ยนไป สำหรับ animation ของ tracking ให้ใช้ transform แทนการเปลี่ยน letter-spacing โดยตรงเมื่อเป็นไปได้
เพิ่ม letter-spacing ถึง 0.12em ผ่านเครื่องมือของเบราว์เซอร์หรือการตั้งค่า accessibility ตรวจสอบว่าข้อความไม่ถูกตัด ไม่ซ้อนทับกับองค์ประกอบข้างเคียง และไม่หลุดออกจากคอนเทนเนอร์ เนื้อหาต้องไม่หายไปไม่ว่าการตั้งค่าใดๆ
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม