Baseline হল একটি অদৃশ্য অনুভূমিক রেখা যার উপর ফন্টের সমস্ত অক্ষর অবস্থান করে। বেশিরভাগ অক্ষর baseline-এর উপর দাঁড়ায়, যখন descenders নীচে প্রসারিত হয়। মোবাইল ইন্টারফেসে, অন্যান্য উপাদানের — আইকন, বাটন, চিত্র — সাথে টেক্সটের সঠিক সারিবদ্ধকরণের জন্য baseline ব্যবহার করা হয়। Material Design Typography Guidelines (2025) অনুসারে, baseline বরাবর ধারাবাহিক সারিবদ্ধকরণ ইন্টারফেসের ভিজুয়াল শ্রেণিবিন্যাস উন্নত করে এবং বিষয়বস্তু স্ক্যান করার সময় জ্ঞানীয় ভার কমায়।
মূল পয়েন্ট
Baseline (ভিত্তি রেখা) টাইপোগ্রাফির একটি মৌলিক ধারণা যা অনুভূমিক অক্ষ নির্ধারণ করে যার উপর ফন্টের অক্ষরগুলি অবস্থান করে। ডিজিটাল ফন্টের প্রতিটি গ্লিফের baseline-এর সাথে একটি সংযুক্তি বিন্দু থাকে — টেক্সট রেন্ডার করার সময় এই রেখা বরাবর অক্ষরগুলি সারিবদ্ধ হয়। বেশিরভাগ ছোট হাতের অক্ষর (অ, আ, ই, উ, এ) সরাসরি baseline-এর উপর দাঁড়ায়, যখন descenders (প, য, গ, জ-এর মতো অক্ষরে) নীচে প্রসারিত হয়।
ভিত্তি রেখা ফন্ট মেট্রিকের একমাত্র রেফারেন্স পয়েন্ট নয়। এর পাশাপাশি রয়েছে: x-height (ছোট অক্ষরের উচ্চতা), cap-height (বড় অক্ষরের উচ্চতা), ascender-line (উপরের প্রসারিত উপাদানের রেখা) এবং descender-line (নিচের প্রসারিত উপাদানের রেখা)। Baseline এবং descender-line-এর মধ্যে দূরত্ব নিচের descender নির্ধারণ করে, এবং baseline এবং ascender-line-এর মধ্যে দূরত্ব উপরের ascender নির্ধারণ করে। এই মেট্রিকগুলি পূর্ণ লাইন উচ্চতা গঠন করে এবং line-height গণনাকে প্রভাবিত করে।
Bringhurst — The Elements of Typographic Style (2024) অনুসারে, baseline হল একমাত্র সার্বজনীন মেট্রিক যা একই টাইপফেসের সমস্ত ফন্টের জন্য অভিন্ন। যেখানে x-height এবং cap-height এক শৈলী থেকে অন্য শৈলীতে পরিবর্তিত হয়, সেখানে baseline ফন্টের কোঅর্ডিনেট গ্রিডের সাপেক্ষে একটি ধ্রুবক অবস্থান বজায় রাখে। এটি baseline-কে ইন্টারফেসে আন্তঃউপাদান সারিবদ্ধকরণের জন্য একটি নির্ভরযোগ্য রেফারেন্স করে তোলে।
মোবাইল ইন্টারফেসে, baseline অ-পাঠ্য উপাদানের সাথে টেক্সট সারিবদ্ধ করার জন্য একটি রেফারেন্স রেখা হিসাবে ব্যবহৃত হয়। যখন টেক্সটের পাশে একটি আইকন, বাটন বা চিত্র রাখা হয়, তখন কেবল সেগুলি সেন্টার করা যথেষ্ট নয় — টেক্সটটি অপটিক্যালি স্থানান্তরিত দেখায় যদি তার baseline সংলগ্ন উপাদানের কেন্দ্র বা baseline-এর সাথে মেলে না।
একটি সাধারণ দৃশ্যকল্প হল সেটিংস তালিকা বা ন্যাভিগেশনে আইকন এবং টেক্সট সহ একটি সারি। যদি আইকন এবং টেক্সট সেন্টার করা হয়, টেক্সটটি দৃশ্যত উঁচু দেখাবে কারণ baseline কন্টেইনারের জ্যামিতিক কেন্দ্রের নীচে অবস্থিত। সমাধান হল আইকনকে টেক্সট baseline-এ সারিবদ্ধ করা। Material Design (2025) মোবাইল অ্যাপে সমস্ত মিশ্র সারির জন্য এই পদ্ধতির সুপারিশ করে।
| দৃশ্যকল্প | কেন্দ্র সারিবদ্ধকরণ | Baseline সারিবদ্ধকরণ |
|---|---|---|
| আইকন + টেক্সট | টেক্সট আইকনের উপরে দেখায় | আইকন এবং টেক্সট baseline মিলে যায় |
| টেক্সট + টেক্সট | ভিন্ন আকার কম্পন সৃষ্টি করে | একক baseline, স্পষ্ট শ্রেণিবিন্যাস |
| বাটন সহ টেক্সট | টেক্সট কেন্দ্র থেকে সরে যায় | টেক্সট অপটিক্যালি সেন্টারেড |
| শিরোনাম + ক্যাপশন | লাইনের ভিজুয়াল বিরতি | লাইনগুলি ছন্দময় এবং সংযুক্ত |
Baseline বরাবর অপটিক্যাল সারিবদ্ধকরণ বিশেষ করে স্ক্রিন ফর্মগুলির জন্য গুরুত্বপূর্ণ: ইনপুট ফিল্ড, লেবেল এবং ত্রুটি বার্তাগুলি একটি জটিল টাইপোগ্রাফিক গ্রিড গঠন করে, এবং এমনকি 1–2 পিক্সেলের baseline সরণও উপলব্ধিকে উল্লেখযোগ্যভাবে ক্ষতিগ্রস্ত করে।
iOS ডেভেলপমেন্টে, Auto Layout থেকে SwiftUI লেআউট সিস্টেম পর্যন্ত একাধিক প্রক্রিয়ার মাধ্যমে baseline সমর্থিত। UIKit-এ, সংলগ্ন উপাদানের সাপেক্ষে টেক্সট অবস্থানের জন্য .firstBaseline এবং .lastBaseline অ্যাট্রিবিউট সহ NSLayoutConstraint ব্যবহার করা হয়। প্রথমটি একক-লাইন টেক্সটের জন্য উপযুক্ত, দ্বিতীয়টি মাল্টি-লাইন টেক্সটের জন্য যেখানে শেষ লাইন গুরুত্বপূর্ণ।
// UIKit: baseline দ্বারা লেবেল এবং আইকন সারিবদ্ধ করুন
let label = UILabel()
label.text = "সেটিংস"
let icon = UIImageView(image: UIImage(systemName: "gear"))
let constraint = label.lastBaselineAnchor
.constraint(equalTo: icon.lastBaselineAnchor)
constraint.isActive = true
SwiftUI-তে, baseline সারিবদ্ধকরণ কাস্টম AlignmentGuide-এর মাধ্যমে বাস্তবায়িত হয়। ডিফল্টরূপে, SwiftUI উপাদানগুলি কেন্দ্রে সারিবদ্ধ করে, কিন্তু আইকন সহ টেক্সট লেবেলের জন্য, baseline আরও সঠিক ফলাফল দেয়। SwiftUI বিল্ট-ইন VerticalAlignment.firstTextBaseline এবং .lastTextBaseline প্রদান করে।
// SwiftUI: HStack-এ baseline সারিবদ্ধকরণ
HStack(alignment: .firstTextBaseline) {
Image(systemName: "gear")
Text("সেটিংস")
.font(.title3)
}
Apple HIG — Typography (2025) অনুসারে, SwiftUI-তে firstTextBaseline ব্যবহার কেন্দ্র সারিবদ্ধকরণের তুলনায় ম্যানুয়াল প্যাডিং সমন্বয় 40% কমায়। এটি বিশেষ করে ডায়নামিক টাইপ সহ তালিকাগুলিতে লক্ষণীয়, যেখানে ব্যবহারকারীর অ্যাক্সেসিবিলিটি সেটিংস অনুযায়ী ফন্টের আকার পরিবর্তিত হয়।
Baseline মান ফন্ট API-এর মাধ্যমে পাওয়া যায়। UIKit-এ, UIFont.ascender প্রপার্টি baseline থেকে লাইনের শীর্ষ পর্যন্ত দূরত্ব ফেরত দেয়, এবং UIFont.descender baseline থেকে নীচে পর্যন্ত দূরত্ব (ঋণাত্মক মান) ফেরত দেয়। ascender এবং descender-এর যোগফল, leading বিবেচনায় নিয়ে, পূর্ণ লাইন উচ্চতা দেয়।
let font = UIFont.systemFont(ofSize: 17)
let baseline = font.ascender // baseline থেকে শীর্ষে দূরত্ব
let descent = font.descender // ঋণাত্মক, baseline-এর নিচে
let totalHeight = font.lineHeight // পূর্ণ লাইন উচ্চতা
Android ডেভেলপমেন্টে, baseline ক্লাসিক View সিস্টেম এবং Jetpack Compose উভয়েই সমর্থিত। View সিস্টেমে, baseline সারিবদ্ধকরণের জন্য ALIGN_BASELINE এবং ALIGN_TOP নিয়ম সহ RelativeLayout.LayoutParams ব্যবহার করা হয়। TextView-এর জন্য android:baselineAligned অ্যাট্রিবিউট উপলব্ধ, যা LinearLayout-এ টেক্সট উপাদানের স্বয়ংক্রিয় সারিবদ্ধকরণ নিয়ন্ত্রণ করে।
<!-- Android XML: baseline alignment in LinearLayout -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:baselineAligned="true">
<TextView
android:id="@+id/label"
android:text="Price"
android:textSize="16sp" />
<TextView
android:id="@+id/value"
android:text="$24.99"
android:textSize="20sp"
android:layout_alignBaseline="@id/label" />
</LinearLayout>
Jetpack Compose-এ, baseline সারিবদ্ধকরণ Modifier.alignWithBaseline বা কাস্টম লেআউটে AlignmentLine-এর মাধ্যমে বাস্তবায়িত হয়। Compose বিল্ট-ইন FirstBaseline এবং LastBaseline প্রদান করে, যা Column এবং Row-এ বিভিন্ন আকারের টেক্সট উপাদান সারিবদ্ধ করতে ব্যবহার করা যেতে পারে।
// Jetpack Compose: Modifier-এর মাধ্যমে baseline সারিবদ্ধকরণ
Row(
verticalAlignment = Alignment.FirstBaseline
) {
Icon(
imageVector = Icons.Default.Settings,
contentDescription = null
)
Text(
text = "সেটিংস",
style = MaterialTheme.typography.titleMedium
)
}
Android Developers — Typography and Alignment (2025) অনুসারে, Jetpack Compose-এ baseline সারিবদ্ধকরণ ম্যানুয়ালি প্যাডিং বা অফসেট সেট করার তুলনায় টেক্সটের ভুল অবস্থান সম্পর্কিত UI-পরীক্ষা বাগ 30% কমায়।
Flutter ভিত্তি রেখার সাথে কাজ করার জন্য দুটি বিল্ট-ইন প্রক্রিয়া প্রদান করে: টাইপোগ্রাফিক কনভেনশন (alphabetic বা ideographic) নির্বাচনের জন্য TextBaseline এনাম এবং Row ও Column-এ সারিবদ্ধকরণের জন্য CrossAxisAlignment.baseline। TextBaseline.alphabetic পশ্চিমা টাইপোগ্রাফির সাথে মিলে যায়, যখন TextBaseline.ideographic পূর্ব এশীয় টাইপোগ্রাফির সাথে মিলে যায়।
// Flutter: baseline সারিবদ্ধকরণ
Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: [
Icon(Icons.settings),
Text('সেটিংস', style: TextStyle(fontSize: 20)),
],
)
সঠিক অবস্থানের জন্য, Flutter Baseline উইজেটও প্রদান করে, যা চাইল্ড উপাদানকে এমনভাবে স্থানান্তরিত করে যাতে তার baseline কন্টেইনারের শীর্ষ থেকে নির্দিষ্ট দূরত্বে থাকে। এটি অ-মানক সারিবদ্ধকরণ সহ কাস্টম টেক্সট লেআউট তৈরি করার সময় কার্যকর।
// Flutter: Baseline উইজেট
Baseline(
baseline: 40.0,
baselineType: TextBaseline.alphabetic,
child: Text(
'সারিবদ্ধ টেক্সট',
style: TextStyle(fontSize: 24),
),
)
Flutter Documentation — Layout and Typography (2025) অনুসারে, CrossAxisAlignment.baseline ম্যানুয়ালি প্যাডিং গণনা না করে Flutter-এ বিভিন্ন ফন্ট আকারের টেক্সট সঠিকভাবে সারিবদ্ধ করার একমাত্র উপায়। এটি বিশেষ করে সেই সারিগুলির জন্য গুরুত্বপূর্ণ যেখানে শিরোনাম এবং ক্যাপশন মিশ্রিত থাকে, যেমন মূল্য এবং ডিসকাউন্ট সহ পণ্য কার্ডে।
সবচেয়ে সাধারণ ভুলগুলির মধ্যে একটি হল আইকন বা চিত্র সহ সারিগুলিতে টেক্সট সেন্টার করা। যখন একটি আইকন এবং টেক্সট কন্টেইনারের ভিতরে সেন্টার করা হয়, টেক্সটটি দৃশ্যত আইকনের সাপেক্ষে উপরের দিকে সরে যায়। এটি ঘটে কারণ টেক্সটের কেন্দ্র তার baseline-এর উপরে থাকে, যখন আইকনের কেন্দ্র জ্যামিতিক কেন্দ্রের সাথে মিলে যায়।
NN Group — Typography in UI Design (2025) অনুসারে, ভুল baseline সারিবদ্ধকরণ সঠিকভাবে সারিবদ্ধ ইন্টারফেসের তুলনায় ব্যবহারকারীর তালিকা স্ক্যান করার সময় 22% বাড়িয়ে দেয়। এটি তালিকা এবং ফর্মগুলির জন্য একটি গুরুত্বপূর্ণ মেট্রিক যা বেশিরভাগ মোবাইল অ্যাপের ভিত্তি গঠন করে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Baseline হল অনুভূমিক রেখা যার উপর অক্ষরগুলি অবস্থান করে, যেখানে line-height হল দুইটি ক্রমিক লাইনের ভিত্তি রেখার মধ্যে দূরত্ব। Baseline উল্লম্ব স্থানে টেক্সটের অবস্থান নির্ধারণ করে, যেখানে line-height আন্তঃলাইন ছন্দ নির্ধারণ করে। উভয় ধারণাই পরস্পর সম্পর্কিত: line-height একটি লাইনের baseline থেকে পরবর্তী লাইনের baseline পর্যন্ত গণনা করা হয়।
UIKit-এ, baseline মান UILabel, UITextView এবং UIButton-এর lastBaselineAnchor বা firstBaselineAnchor প্রপার্টির মাধ্যমে পাওয়া যায়। ফন্ট মেট্রিকে সরাসরি অ্যাক্সেসের জন্য, UIFont.ascender (baseline থেকে শীর্ষ পর্যন্ত দূরত্ব) এবং UIFont.descender (baseline থেকে নীচে পর্যন্ত দূরত্ব, ঋণাত্মক চিহ্ন সহ) ব্যবহার করুন।
হ্যাঁ, SwiftUI ডায়নামিক টাইপের (Dynamic Type) সাথে baseline সারিবদ্ধকরণ সমর্থন করে। .firstTextBaseline এবং .lastTextBaseline-এর মাধ্যমে সারিবদ্ধকরণ স্বয়ংক্রিয়ভাবে ফন্টের আকার পরিবর্তনের সাথে খাপ খায়। এটি ম্যানুয়াল প্যাডিং সমন্বয়ের প্রয়োজন ছাড়াই ফন্টের আকার বাড়ালে সঠিক টেক্সট অবস্থান প্রদান করে।
Jetpack Compose-এ, Row-এর verticalAlignment প্যারামিটারে Alignment.FirstBaseline ব্যবহার করুন: Row(verticalAlignment = Alignment.FirstBaseline)। এই Row-তে রাখা Icon এবং Text-এর জন্য, Compose স্বয়ংক্রিয়ভাবে তাদের ভিত্তি রেখাগুলি সারিবদ্ধ করবে। যদি আইকনটি আরও সঠিকভাবে সামঞ্জস্য করতে হয়, Modifier.alignWithBaseline ব্যবহার করুন।
কাস্টম ফন্টগুলির নিজস্ব মেট্রিক থাকে: ascender, descender এবং x-height, যা সিস্টেম ফন্ট থেকে ভিন্ন হতে পারে। যদি baseline সারিবদ্ধকরণ অশুদ্ধ ফলাফল দেয়, প্ল্যাটফর্ম API (iOS-এ UIFont.descender, Android-এ Paint.getFontMetrics()) এর মাধ্যমে ফন্ট মেট্রিক পরীক্ষা করুন। আলংকারিক ফন্টগুলির অতিরিক্ত 1–2 পিক্সেল সমন্বয় প্রয়োজন হতে পারে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন