ট্র্যাকিং (Tracking) হল একটি নির্বাচিত টেক্সট খণ্ড জুড়ে আন্তঃ-বর্ণ ব্যবধানের সমান সমন্বয়, কার্নিংয়ের বিপরীতে যা নির্দিষ্ট বর্ণ জোড়ার মধ্যে দূরত্ব সমন্বয় করে। ট্র্যাকিং সমস্ত বর্ণের উপর সমানভাবে প্রয়োগ করা হয়: ধনাত্মক ট্র্যাকিং ব্যবধান বাড়ায়, ঋণাত্মক ট্র্যাকিং হ্রাস করে। MDN Web Docs-এর মতে, ওয়েব ইন্টারফেসে ট্র্যাকিং CSS letter-spacing বৈশিষ্ট্যের মাধ্যমে বাস্তবায়িত হয়, যা যেকোনো দৈর্ঘ্য ইউনিট সমর্থন করে এবং চাইল্ড এলিমেন্ট দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয়।
মূল পয়েন্ট
ট্র্যাকিং (Tracking) হল আন্তঃ-বর্ণ দূরত্বের সমন্বয়, যা টেক্সট ব্লকের সমস্ত বর্ণের উপর সমানভাবে প্রয়োগ করা হয়। কার্নিংয়ের বিপরীতে, যেখানে বর্ণের প্রতিটি জোড়া ফন্টের কার্নিং টেবিলের ভিত্তিতে পৃথক সমন্বয় পায়, ট্র্যাকিং পুরো পরিসরের জন্য একটি একক সংখ্যাসূচক মান হিসাবে সেট করা হয়। ধনাত্মক ট্র্যাকিং ব্যবধান বাড়ায় (প্রসারিত স্পেসিং), ঋণাত্মক ট্র্যাকিং হ্রাস করে (সংকুচিত স্পেসিং)।
শব্দটি ধাতব টাইপোগ্রাফি থেকে উদ্ভূত হয়েছে, যেখানে টাইপ স্লাগের মধ্যে ভৌত দূরত্ব দ্বারা আন্তঃ-বর্ণ ব্যবধান নিয়ন্ত্রিত হত। ডিজিটাল টাইপোগ্রাফিতে, ট্র্যাকিং কার্নিং টেবিলের উপরে প্রয়োগ করা হয়: প্রথমে ফন্ট তার অন্তর্নির্মিত কার্নিং জোড়া প্রয়োগ করে, তারপর সিস্টেম সমস্ত বর্ণে সমান ট্র্যাকিং যোগ করে। ফলস্বরূপ ব্যবধান = কার্নিং + ট্র্যাকিং, যা টেক্সটকে আক্রমণাত্মকভাবে সংকুচিত করার সময় বিবেচনা করা গুরুত্বপূর্ণ।
পরিমাপের একক: ট্র্যাকিং পরম এককে (পয়েন্ট, পিক্সেল, মিলিমিটার) এবং আপেক্ষিক এককে (em, ফন্ট সাইজের শতাংশ) উল্লেখ করা যেতে পারে। মোবাইল ডেভেলপমেন্টে, ট্র্যাকিং সাধারণত পয়েন্ট (iOS) বা sp (Android)-এ পরম মান হিসাবে, ওয়েবে em-এ আপেক্ষিক মান হিসাবে উল্লেখ করা হয়। আপেক্ষিক একক অ্যাক্সেসিবিলিটির জন্য পছন্দনীয় কারণ ব্যবহারকারী ফন্ট সাইজ পরিবর্তন করলে এগুলি স্কেল হয়।
ট্র্যাকিং এবং কার্নিং-এর মধ্যে বিভ্রান্তি নবীন ডিজাইনার এবং ডেভেলপারদের মধ্যে সবচেয়ে সাধারণ ভুলগুলির মধ্যে একটি। কার্নিং মাইক্রো স্তরে কাজ করে — এটি তাদের জ্যামিতির ভিত্তিতে নির্দিষ্ট বর্ণ জোড়ার (AV, Te, To) মধ্যে ব্যবধান সমন্বয় করে। ট্র্যাকিং ম্যাক্রো স্তরে কাজ করে — এটি তাদের আকৃতি বিবেচনা না করে একটি খণ্ডের সমস্ত বর্ণকে সমানভাবে স্থানান্তরিত করে।
ভিজ্যুয়াল প্রভাব: কার্নিংয়ের সাথে, বিভিন্ন বর্ণ জোড়ার মধ্যে দূরত্ব পরিবর্তিত হয় — A এবং V-এর মধ্যে A এবং I-এর তুলনায় ছোট, কারণ বর্ণের আকার একে অপরকে ক্ষতিপূরণ দেয়। ট্র্যাকিংয়ের সাথে, সমস্ত দূরত্ব একই — A এবং V, A এবং I, T এবং o-এর মধ্যে — সর্বত্র একই স্থানান্তর। এটি ট্র্যাকিংকে বৈশ্বিক সমন্বয়ের একটি হাতিয়ার এবং কার্নিংকে সূক্ষ্ম-সমন্বয়ের একটি হাতিয়ার করে তোলে।
সংযুক্ত ব্যবহার: ইন্টারফেস টাইপোগ্রাফিতে, ট্র্যাকিং এবং কার্নিং একসাথে ব্যবহার করা হয়। ফন্টে মৌলিক অপটিমাইজেশনের জন্য একটি কার্নিং টেবিল থাকে এবং ডেভেলপার স্টাইলিং বা অ্যাক্সেসিবিলিটির জন্য ট্র্যাকিং যোগ করে। কার্নিং টেবিলটি প্রথমে প্রয়োগ করা হয়, তারপর এর উপরে ট্র্যাকিং যোগ করা হয়। ঋণাত্মক ট্র্যাকিং (সংকোচন) সহ, কার্নিং জোড়া অবাঞ্ছিত ওভারল্যাপ তৈরি করতে পারে — সমস্যাজনক সংমিশ্রণগুলি পরীক্ষা করুন।
| বৈশিষ্ট্য | কার্নিং | ট্র্যাকিং |
|---|---|---|
| পরিধি | বর্ণ জোড়া | সম্পূর্ণ টেক্সট |
| মান | প্রতিটি জোড়ার জন্য পৃথক | সমস্ত বর্ণের জন্য সমান |
| উদ্দেশ্য | ভিজ্যুয়াল সমতা | ঘনত্ব সমন্বয় |
| দৃশ্যমানতা | 24pt থেকে শিরোনামে | সব আকারে |
| iOS অ্যাট্রিবিউট | .kern (nil বা 0) | .kern (সংখ্যাসূচক মান) |
ধনাত্মক ট্র্যাকিং বর্ণের মধ্যে দূরত্ব বাড়ায়। এটি ছোট টেক্সটের (10–13pt) পঠনযোগ্যতা উন্নত করতে ব্যবহৃত হয়, যেখানে স্ট্যান্ডার্ড ব্যবধানে বর্ণগুলি দৃশ্যত মিশে যায়। এটি ডিসলেক্সিয়াযুক্ত ব্যবহারকারীদের জন্য অ্যাক্সেসিবিলিটিতেও ব্যবহৃত হয় — বর্ধিত আন্তঃ-বর্ণ ব্যবধান বর্ণ শনাক্তকরণ সহজ করে। সাধারণ মান: iOS-এর জন্য 0.3–1pt, ওয়েবের জন্য 0.02–0.05em।
ঋণাত্মক ট্র্যাকিং বর্ণের মধ্যে দূরত্ব হ্রাস করে। এটি শিরোনাম (24pt থেকে) এবং অ্যাকসেন্ট টেক্সটে ব্যবহৃত হয়, যেখানে ঘন টেক্সট একীভূত এবং আধুনিক দেখায়। বড় আকার সংকোচন ভালভাবে সহ্য করে কারণ আন্তঃ-বর্ণ দূরত্ব দৃশ্যত বড়। সাধারণ মান: -0.3 থেকে -1pt। সীমাবদ্ধতা: -1pt-এর কম ট্র্যাকিং-এ, বর্ণ ওভারল্যাপ করতে পারে, বিশেষত প্রসারিত উপাদানযুক্ত জোড়ায় (fi, fj, TT)।
অভিজ্ঞতামূলক নিয়ম: প্রতিটি ফন্ট আকারের জন্য গ্রহণযোগ্য ট্র্যাকিংয়ের একটি পরিসীমা রয়েছে। ফন্ট যত বড়, সর্বোত্তম পঠনযোগ্যতার জন্য তত কম ট্র্যাকিং প্রয়োজন। সূত্র: সর্বোত্তম ট্র্যাকিং ≈ font-weight × 0.01 − font-size × 0.001। 16pt-এ বোল্ড ফন্টের (weight 700) জন্য: 700 × 0.01 − 16 × 0.001 = 6.84, যা টাইপফেস অনুসারে সামঞ্জস্য করে প্রায় 0.5pt ধনাত্মক ট্র্যাকিং দেয়।
বডি টেক্সট (14–18pt): ট্র্যাকিং প্রয়োজন নেই বা ন্যূনতম ধনাত্মক 0.1–0.3pt। পেশাদার ফন্টে ইতিমধ্যে বডি টেক্সটের জন্য সর্বোত্তম ব্যবধান রয়েছে। বডি টেক্সট ট্র্যাকিংয়ে যেকোনো হস্তক্ষেপ ডিজাইন বা অ্যাক্সেসিবিলিটি প্রয়োজনীয়তা দ্বারা ন্যায়সঙ্গত হতে হবে। শিরোনাম (20–36pt): টাইপফেস এবং ওয়েটের উপর নির্ভর করে -0.3 থেকে -0.8pt পর্যন্ত ঋণাত্মক ট্র্যাকিং গ্রহণযোগ্য। সমস্ত ক্যাপস (ALL CAPS): 0.5–2pt ধনাত্মক ট্র্যাকিং সুপারিশ করা হয়, কারণ ক্যাপসে বড় হাতের অক্ষর অতিরিক্ত ব্যবধান ছাড়া দৃশ্যত মিশে যায়।
টাইপফেস নির্দিষ্টতা: গ্রোটেস্ক জ্যামিতির ফন্ট (Helvetica, Inter, SF Pro) সেরিফ টাইপফেসের (Times, Georgia, PT Serif) তুলনায় ঋণাত্মক ট্র্যাকিং ভালভাবে সহ্য করে। সেরিফ ফন্টে, সেরিফগুলি বর্ণের মধ্যে অতিরিক্ত ভিজ্যুয়াল সংযোগ তৈরি করে এবং সংকোচন টেক্সটকে অপাঠ্য করে তোলে। সেরিফ টাইপফেসের জন্য, শুধুমাত্র ধনাত্মক ট্র্যাকিং সুপারিশ করা হয়।
iOS-এ, ট্র্যাকিং NSAttributedString-এ একই .kern অ্যাট্রিবিউটের মাধ্যমে বাস্তবায়িত হয় কার্নিংয়ের মতো, একটি পার্থক্য সহ: ট্র্যাকিংয়ের জন্য, nil ছাড়া একটি সংখ্যাসূচক মান উল্লেখ করা হয়। nil মানে ডিফল্ট কার্নিং (ফন্ট টেবিল থেকে), 0 কার্নিং অক্ষম করে, যেকোনো অন্যান্য সংখ্যা কার্নিং টেবিলের উপরে ট্র্যাকিং বোঝায়। এর মানে হল যে যখন .kern = 2 সেট করা হয়, সমস্ত বর্ণ অন্তর্নির্মিত কার্নিং জোড়ার উপরে +2pt আন্তঃ-বর্ণ ব্যবধান পায়।
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 Text-এ .tracking() মডিফায়ার ব্যবহার করে, যা CGFloat গ্রহণ করে। UIKit-এর বিপরীতে, SwiftUI ট্র্যাকিং মডিফায়ারের ভিতরে সমস্ত টেক্সটে প্রয়োগ হয় এবং একাধিক Text ব্লকে বিভক্ত না করে আংশিক হতে পারে না। SwiftUI স্বয়ংক্রিয়ভাবে কার্নিং এবং ট্র্যাকিংয়ের সংমিশ্রণ পরিচালনা করে, ফন্টের কার্নিং টেবিলের উপরে ট্র্যাকিং প্রয়োগ করে।
Android TextView-এ letterSpacing বৈশিষ্ট্য ব্যবহার করে, যা em-এ উল্লেখ করা হয় (ফন্ট সাইজের সাপেক্ষে গুণক)। মান 0 মানে ডিফল্ট ট্র্যাকিং, 0.05 মানে em-এ 5% বৃদ্ধি, -0.02 মানে হ্রাস। Android-এ, letterSpacing ট্র্যাকিং হিসাবে কাজ করে (সমস্ত বর্ণের জন্য সমান), যখন ফন্টের কার্নিং টেবিল 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-এ TextStyle-এ letterSpacing প্যারামিটার ব্যবহার করে, যা sp-এ উল্লেখ করা হয়। উদাহরণস্বরূপ, TextStyle(letterSpacing = 0.5.sp) 0.5 sp-এর ট্র্যাকিং দেয়। XML পদ্ধতির বিপরীতে, Compose একটি একক TextStyle অবজেক্টে letterSpacing-কে অন্যান্য টাইপোগ্রাফিক প্যারামিটারের সাথে একত্রিত করতে দেয়, যা ডিজাইন সিস্টেম তৈরি করা সহজ করে।
ওয়েবে, ট্র্যাকিং CSS বৈশিষ্ট্য letter-spacing-এর মাধ্যমে বাস্তবায়িত হয়, যা যেকোনো দৈর্ঘ্য ইউনিট বা কীওয়ার্ড normal গ্রহণ করে। মান normal 0-এর সাথে সামঞ্জস্যপূর্ণ (কোনো অতিরিক্ত আন্তঃ-বর্ণ ব্যবধান নেই)। বৈশিষ্ট্যটি উত্তরাধিকার সূত্রে প্রাপ্ত হয়, ঋণাত্মক মান সমর্থন করে এবং অ্যানিমেট করা যেতে পারে। CSS Specification অনুসারে, letter-spacing ফন্টের কার্নিং টেবিলের পরে প্রয়োগ করা হয়।
/* 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 বনাম px: em-এ letter-spacing font-size পরিবর্তন হলে স্কেল হয় এবং অ্যাক্সেসিবিলিটির জন্য পছন্দনীয়। px স্কেল হয় না এবং ব্রাউজার টেক্সট জুম করলে অসংগতি সৃষ্টি করতে পারে। সুপারিশ: letter-spacing-এর জন্য সর্বদা em ব্যবহার করুন। ব্যতিক্রম হল যেখানে ট্র্যাকিং আকার থেকে স্বাধীনভাবে স্থির থাকা উচিত, যেমন লোগোতে।
letter-spacing অ্যানিমেট করা: বৈশিষ্ট্যটি CSS ট্রানজিশন এবং অ্যানিমেশন সমর্থন করে, যা টেক্সট প্রকাশের মসৃণ প্রভাব তৈরি করতে দেয়। শিরোনাম লোড হওয়ার সময় letter-spacing: -0.05em থেকে letter-spacing: 0.01em-এ অ্যানিমেট করা আধুনিক ইন্টারফেসে একটি জনপ্রিয় কৌশল। পারফরম্যান্স: letter-spacing অ্যানিমেট করলে রিফ্লো (লেআউট পুনঃগণনা) ঘটে কারণ এটি টেক্সটের প্রস্থ পরিবর্তন করে। যেখানে সম্ভব, উচ্চ-পারফরম্যান্স অ্যানিমেশনের জন্য transform এবং opacity ব্যবহার করুন।
ট্র্যাকিং সরাসরি দৃষ্টি প্রতিবন্ধকতা এবং ডিসলেক্সিয়াযুক্ত ব্যবহারকারীদের জন্য টেক্সট পঠনযোগ্যতা প্রভাবিত করে। WCAG 2.2 নির্দেশিকা 1.4.12 (টেক্সট স্পেসিং) প্রয়োজন করে যে আন্তঃ-বর্ণ, আন্তঃ-লাইন এবং আন্তঃ-অনুচ্ছেদ ব্যবধান নির্দিষ্ট মান পর্যন্ত বৃদ্ধি করলে টেক্সট যেন বিষয়বস্তু না হারায়। letter-spacing-কে কন্টেন্ট ক্রপিং বা এলিমেন্ট ওভারল্যাপ ছাড়া 0.12em পর্যন্ত বৃদ্ধি সহ্য করতে হবে।
ডিসলেক্সিয়া: British Dyslexia Association-এর গবেষণা দেখায় যে letter-spacing 0.12em পর্যন্ত বাড়ালে ডিসলেক্সিয়াযুক্ত ব্যবহারকারীদের পড়ার গতি 10–15% উন্নত হয়। তবে, এটি ব্যক্তিগত — কিছু ব্যবহারকারী স্ট্যান্ডার্ড ব্যবধান পছন্দ করেন। iOS এবং Android আন্তঃ-বর্ণ ব্যবধান বাড়ানোর জন্য সিস্টেম অ্যাক্সেসিবিলিটি সেটিংস প্রদান করে যা অ্যাপ্লিকেশনকে সম্মান করতে হবে।
ডেভেলপারের জন্য নিয়ম: ফিক্সড প্রস্থ/উচ্চতা ব্যবহার করবেন না যা letter-spacing বাড়লে ভেঙে যেতে পারে। অ্যাক্সেসিবিলিটি যাচাই না করে টেক্সট কন্টেইনারে overflow: hidden এড়িয়ে চলুন। সমস্ত স্ক্রিনে 0.12em পর্যন্ত বর্ধিত letter-spacing সহ ইন্টারফেস পরীক্ষা করুন। যদি ডিজাইন ভেঙে যায়, অ্যাক্সেসিবিলিটি উপেক্ষা না করে লেআউট পুনর্বিবেচনা করুন।
প্ল্যাটফর্ম সমর্থন: iOS স্বয়ংক্রিয়ভাবে letter-spacing বাড়ায় যখন অ্যাক্সেসিবিলিটি সেটিংসে Larger Text বৈশিষ্ট্য সক্রিয় থাকে, যদি UIFont.preferredFont ব্যবহার করা হয়। Android FontScale-এর মাধ্যমে অনুরূপ বিকল্প প্রদান করে। ডেভেলপারের এই সেটিংস অক্ষম করা উচিত নয়। পরীক্ষার পরিস্থিতি: ডিভাইস সেটিংসে সর্বাধিক টেক্সট আকার সক্রিয় করুন এবং যাচাই করুন যে ট্র্যাকিং ইন্টারফেস লেআউট ভাঙে না।
সচরাচর জিজ্ঞাসিত প্রশ্ন
iOS-এ, .kern = nil মানে ফন্ট টেবিল থেকে ডিফল্ট কার্নিং। .kern = 0 কার্নিং অক্ষম করে। .kern = যেকোনো সংখ্যা ট্র্যাকিং, যা কার্নিং টেবিলের উপরে যোগ করা হয়। Android-এ, letterSpacing সর্বদা ট্র্যাকিং।
বড় হাতের টেক্সটের (ALL CAPS) জন্য, 0.05–0.15em ধনাত্মক ট্র্যাকিং ব্যবহার করুন। বড় হাতের অক্ষরে আরোহী এবং অবরোহীর অভাব থাকে এবং সেগুলি দৃশ্যত মিশে যায়। iOS-এ: 14–18pt ক্যাপসের জন্য .kern = 1–2pt।
হ্যাঁ। CSS বৈশিষ্ট্য letter-spacing ঋণাত্মক মান সমর্থন করে। ন্যূনতম মান ব্রাউজার-সীমাবদ্ধ — সাধারণত -0.1em, যার পরে বর্ণ ওভারল্যাপ হতে শুরু করে। ঋণাত্মক ট্র্যাকিং শুধুমাত্র 24pt থেকে শিরোনামের জন্য ব্যবহার করুন।
ট্র্যাকিং স্ক্রোল করার সময় সরাসরি FPS প্রভাবিত করে না। তবে, CSS-এ letter-spacing পরিবর্তন করলে রিফ্লো হয় কারণ এটি টেক্সট ব্লকের প্রস্থ পরিবর্তন করে। ট্র্যাকিং অ্যানিমেশনের জন্য, যেখানে সম্ভব সরাসরি letter-spacing পরিবর্তন না করে transform ব্যবহার করুন।
ব্রাউজার টুল বা অ্যাক্সেসিবিলিটি সেটিংসের মাধ্যমে letter-spacing 0.12em পর্যন্ত বাড়ান। যাচাই করুন যে টেক্সট ক্রপ হয়নি, পাশের এলিমেন্টের উপর ওভারল্যাপ করেনি এবং কন্টেইনার থেকে বেরিয়ে যায়নি। যেকোনো সেটিং-এ বিষয়বস্তু অদৃশ্য হওয়া উচিত নয়।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন