کرننگ: یہ کیا ہے اور حروف کے درمیان فاصلہ کیسے ایڈجسٹ کریں

مصنف: IT Sectr اشاعت: 2026-07-24 مطالعے کا وقت: 9 منٹ

کرننگ متن میں بصری یکسانیت حاصل کرنے کے لیے مخصوص حروف کے جوڑوں کے درمیان جگہ کا انتخابی ایڈجسٹمنٹ ہے۔ ٹریکنگ کے برعکس، جو تمام حروف کے درمیان فاصلہ یکساں طور پر تبدیل کرتی ہے، کرننگ ہر حرفی جوڑے کی شکل کو مدنظر رکھتی ہے: A اور V، T اور o، W اور a۔ کرننگ کے بغیر، ابھرے ہوئے عناصر والے مجموعے غیر مساوی نظر آتے ہیں — حروف کے درمیان بصری خلا یا دباؤ پیدا ہوتا ہے۔ Apple NSAttributedString دستاویزات کے مطابق، iOS پر کرننگ .kern خاصیت کے ذریعے کنفیگر کی جاتی ہے اور مثبت اور منفی دونوں اقدار کو سپورٹ کرتی ہے۔

اہم نکات

  • کرننگ — بصری متن کی یکسانیت کے لیے حروف کے جوڑوں کے درمیان فاصلے کا انتخابی ایڈجسٹمنٹ
  • ٹریکنگ سے مختلف: کرننگ جوڑوں کے ساتھ کام کرتی ہے، ٹریکنگ پورے متن پر یکساں طور پر لاگو ہوتی ہے
  • iOS پر UIKit میں NSAttributedString کے ساتھ .kern خاصیت کے ذریعے کنفیگر کی جاتی ہے
  • Android پر TextView یا SpannableString میں letterSpacing کے ذریعے لاگو کی جاتی ہے
  • سرخیوں اور بڑے فونٹ سائز کے لیے اہم جہاں فاصلے کی عدم یکسانیت ننگی آنکھ سے نظر آتی ہے

ٹائپوگرافی میں کرننگ کیا ہے

کرننگ بصری نقائص کو ختم کرنے کے لیے مخصوص حروف کے جوڑوں کے درمیان فاصلہ دستی یا خودکار طور پر ایڈجسٹ کرنے کا عمل ہے۔ مسئلہ اس لیے پیدا ہوتا ہے کہ ہر حرف کی ایک منفرد جیومیٹری ہوتی ہے: A کا ایک چوٹی ہے، V کا دائیں جھکاؤ ہے، T کا ایک چوڑا کراس بار ہے۔ جب اس طرح کے حروف ایک دوسرے کے ساتھ ہوتے ہیں، تو ان کی خاکہ کے درمیان فاصلہ غیر مساوی لگتا ہے، اگرچہ set width ایک جیسی ہو۔

فونٹ کرننگ ٹیبلز میں پہلے سے طے شدہ ایڈجسٹمنٹ اقدار کے ساتھ حروف کے جوڑے ہوتے ہیں۔ ایک اچھے ٹائپ فیس میں 300 سے 2000 کرننگ جوڑے ہو سکتے ہیں۔ پیشہ ورانہ ٹائپ فیسز — جیسے Apple کا SF Pro یا Google کا Roboto — میں باریک بینی سے تیار کردہ کرننگ ٹیبلز شامل ہوتی ہیں جو لاطینی اور سیریلک حروف کے تمام ممکنہ مجموعوں کو احاطہ کرتی ہیں۔ Fontshop Guide to Kerning کے مطابق، کرننگ ٹیبلز کا معیار پیشہ ورانہ فونٹ کے اہم اشاروں میں سے ایک ہے۔

کرننگ کا بصری اثر خاص طور پر سرخیوں، لوگو اور بڑے فونٹ سائز (24 pt اور اس سے اوپر) میں نمایاں ہوتا ہے۔ چھوٹے متن (12–14 pt) میں حروف کے درمیان فاصلہ کم ہوتا ہے اور کرننگ کم نمایاں ہوتی ہے، اگرچہ یہ پھر بھی کام کرتی ہے۔ ویب براؤزرز اور موبائل OS ڈیفالٹ طور پر بلٹ ان کرننگ لاگو کرتے ہیں، لیکن ڈویلپر مخصوص ڈیزائن کے لیے اسے غیر فعال یا ایڈجسٹ کر سکتا ہے۔

کرننگ اور ٹریکنگ: کلیدی فرق

ابتدائی ڈویلپر اکثر کرننگ اور ٹریکنگ کو الجھاتے ہیں، لیکن یہ بنیادی طور پر مختلف ٹائپوگرافک پیرامیٹرز ہیں۔ کرننگ حرف-جوڑی کی سطح پر کام کرتی ہے اور صرف مخصوص مجموعوں کے درمیان فاصلہ ایڈجسٹ کرتی ہے جہاں حرف جیومیٹری بصری عدم توازن پیدا کرتی ہے۔ ٹریکنگ (letter-spacing) منتخب حصے میں تمام حروف کے درمیان فاصلہ یکساں طور پر تبدیل کرتی ہے — اسے یکساں طور پر بڑھاتی یا گھٹاتی ہے۔

ٹریکنگ کب استعمال کی جاتی ہے: چھوٹے متن کی پڑھنے کی اہلیت بہتر بنانے کے لیے (مثبت ٹریکنگ)، زور دار سرخیاں بنانے کے لیے (منفی ٹریکنگ)، انٹرفیس ڈیزائن میں متن کو اسٹائل کرنے کے لیے۔ ٹریکنگ کو ایک عددی قدر کے طور پر سیٹ کیا جاتا ہے اور ہر حرف پر لاگو کیا جاتا ہے، بشمول پہلے سے کرن شدہ جوڑے — کرننگ اصلاحات محفوظ رہتی ہیں لیکن ان کے اوپر ایک عالمی تبدیلی شامل کی جاتی ہے۔

پیرامیٹرکرننگٹریکنگ
دائرہ کارانفرادی حروف کے جوڑےمتن کا پورا حصہ
قدرہر جوڑے کے لیے منفردتمام حروف کے لیے یکساں
مقصدبصری یکسانیتمتن کی کثافت کا ایڈجسٹمنٹ
iOS خاصیتNSAttributedString میں .kernCSS میں letter-spacing
نمایاں پن24pt سے سرخیوں میںتمام فونٹ سائز میں

اہم قاعدہ: منفی ٹریکنگ (کمپریشن) کے ساتھ، کرننگ جوڑوں پر نظر رکھیں — وہ حروف کے ناپسندیدہ اوورلیپ بنا سکتے ہیں۔ CSS میں، letter-spacing خاصیت فونٹ کی کرننگ ٹیبل کے اوپر لاگو ہوتی ہے، اور مضبوط کمپریشن (letter-spacing: -1px) کے ساتھ کرننگ اصلاحات حروف کے ضم ہونے کا سبب بن سکتی ہیں۔

NSAttributedString کے ذریعے iOS میں کرننگ کا نفاذ

iOS پر، کرننگ NSAttributedString میں .kern خاصیت کے ذریعے منظم کی جاتی ہے۔ خاصیت کی قدر Float ہے، جہاں مثبت عدد فاصلہ بڑھاتا ہے، منفی عدد گھٹاتا ہے، اور 0 کرننگ کو غیر فعال کرتا ہے۔ ڈیفالٹ قدر nil ہے، جس کا مطلب ہے فونٹ کی کرننگ ٹیبل کا استعمال۔ کرننگ کے ساتھ کام کرنے کے لیے بنیادی API NSMutableAttributedString ہے جس میں متن کی رینج میں خاصیت شامل کی جاتی ہے۔

swift
let text = "Kerning in mobile interfaces"
let attributedText = NSMutableAttributedString(
    string: text
)

// کرننگ فعال کریں (فونٹ ٹیبل استعمال کرتا ہے)
attributedText.addAttribute(
    .kern,
    value: 0.5,
    range: NSRange(
        location: 0,
        length: text.count
    )
)

// UILabel پر لاگو کریں
label.attributedText = attributedText

ڈیفالٹ قدر .kern = nil فونٹ ٹیبل سے کرننگ کو فعال کرتی ہے۔ اگر آپ کو کرننگ مکمل طور پر غیر فعال کرنے کی ضرورت ہے، تو .kern = 0 سیٹ کریں۔ اقدار 0.0 اور nil مختلف حالتیں ہیں: nil ٹیبل استعمال کرتی ہے، 0 تمام کرننگ جوڑوں کو زبردستی صفر کرتی ہے۔ Apple Text Programming Guide کے مطابق، واضح طور پر 0 سیٹ کرنا یکساں فاصلہ والے متن یا ان صورتوں کے لیے مفید ہے جہاں کرننگ مداخلت کرتی ہے — مثال کے طور پر، مقررہ چوڑائی والے بٹنوں میں۔

SwiftUI Text کے لیے .kerning() موڈیفائر فراہم کرتا ہے۔ UIKit کے برعکس، SwiftUI میں کرننگ ویو کی سطح پر سیٹ کی جاتی ہے، منسوب سٹرنگ پر نہیں۔ موڈیفائر ایک CGFloat قبول کرتا ہے اور Text بلاک کے اندر تمام متن پر لاگو ہوتا ہے۔ SwiftUI میں جزوی کرننگ کے لیے، Text پر + آپریٹر اور انفرادی موڈیفائر کا مجموعہ استعمال کیا جاتا ہے۔

swift
struct KerningView: View {
    var body: some View {
        Text("کرننگ کے ساتھ سرخی")
            .kerning(1.0)
            .font(.title)
    }
}

کارکردگی: کرننگ خاصیت والا NSAttributedString رینڈرنگ کے دوران حروف کی پوزیشنوں کا دوبارہ حساب لگاتا ہے۔ جامد متن کے لیے یہ ایک بار ہوتا ہے۔ متحرک متن (UICollectionView میں بدلتے ہوئے متن) کے لیے — ہر بار جب یہ بدلتا ہے۔ لمبی سٹرنگز (500 حروف سے زیادہ) پر کرننگ کے ساتھ بڑی رینج استعمال کرنا اسکرولنگ کے دوران FPS کم کر سکتا ہے۔

letterSpacing کے ذریعے Android پر کرننگ کنفیگر کرنا

Android پر، کرننگ TextView اور XML لے آؤٹ میں letterSpacing خاصیت کے ذریعے منظم کی جاتی ہے۔ خاصیت Float قسم کی ہے اور فونٹ کے em سائز کے ضارب کے طور پر کام کرتی ہے۔ قدر 0 ڈیفالٹ کرننگ سے مطابقت رکھتی ہے، مثبت فاصلہ بڑھاتی ہے، منفی گھٹاتی ہے۔ letterSpacing API Level 21 (Android 5.0 Lollipop) سے دستیاب ہے۔

SpannableString کے ذریعے نفاذ پورے متن کے بجائے سٹرنگ کے ایک حصے پر کرننگ لاگو کرنے کی اجازت دیتا ہے۔ عین مطابق کنٹرول کے لیے ScaleXSpan کلاس یا کسٹم ReplacementSpan استعمال کیا جاتا ہے۔ Android Developer Guide کے مطابق، ScaleXSpan حروف کو افقی طور پر اسکیل کرتا ہے، حروف کے درمیان فاصلے میں تبدیلی کی نقل کرتا ہے، لیکن براہ راست کرننگ جوڑی کا کنٹرول فراہم نہیں کرتا۔

groovy
// XML لے آؤٹ میں
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text with kerning"
    android:letterSpacing="0.05" />

// Kotlin میں پروگرام کے ذریعے
val textView = findViewById<TextView>(R.id.myTextView)
textView.letterSpacing = 0.05f

حدود: Android کرننگ ٹیبلز کو براہ راست سپورٹ نہیں کرتا — letterSpacing تمام حروف کے لیے ٹریکنگ کے طور پر کام کرتی ہے۔ Android پر جوڑی کرننگ کے لیے، بلٹ ان کرننگ ٹیبلز (OpenType GPOS feature kern) والے فونٹ استعمال کیے جاتے ہیں۔ سپورٹ OS ورژن اور رینڈرنگ انجن پر منحصر ہے: Android 10+ پر Minikin مکمل OpenType فیچر سپورٹ کے ساتھ استعمال ہوتا ہے، پرانے ورژنز پر HarfBuzz حدود کے ساتھ۔ سفارش: Android 8.0 سے نیچے والے آلات پر کرننگ ڈسپلے کو ٹیسٹ کریں۔

CSS کے ذریعے ویب ڈویلپمنٹ میں کرننگ

ویب پر، کرننگ کو CSS خاصیت font-kerning کے ذریعے کنٹرول کیا جاتا ہے، جو فونٹ کی بلٹ ان کرننگ ٹیبلز کو فعال یا غیر فعال کرتی ہے۔ اقدار: auto (براؤزر فیصلہ کرتا ہے)، normal (کرننگ فعال)، none (کرننگ غیر فعال)۔ یہ خاصیت 2016 سے تمام جدید براؤزرز کے ذریعے سپورٹ کی جاتی ہے۔ MDN Web Docs کے مطابق، font-kerning صرف کرننگ ٹیبل والے OpenType فونٹ پر لاگو ہوتی ہے۔

CSS خاصیت letter-spacing ٹریکنگ کی مشابہ ہے، لیکن یہ کرننگ جیسے اثرات کے لیے بھی استعمال ہوتی ہے۔ font-kerning کے برعکس، letter-spacing کرننگ جوڑوں کو مدنظر رکھے بغیر تمام حروف کے درمیان فاصلہ یکساں طور پر تبدیل کرتی ہے۔ جب دونوں خاصیتیں استعمال کی جاتی ہیں، font-kerning پہلے لاگو ہوتی ہے، پھر letter-spacing اس کے اوپر یکساں تبدیلی شامل کرتی ہے۔

css
/* Enable kerning for headings */
h1 {
    font-kerning: normal;
    letter-spacing: 0.02em;
}

/* Disable kerning for monospace */
code, pre {
    font-kerning: none;
}

TypeScript یوٹیلیٹی کرننگ کو مدنظر رکھتے ہوئے بہترین letter-spacing کا حساب لگانے کے لیے Canvas API کے ذریعے فونٹ کی کرننگ ٹیبل کا تجزیہ کر سکتی ہے۔ لیکن عملی طور پر، ویب ڈویلپر font-kerning: normal پر بھروسہ کرتے ہیں جو زیادہ تر معاملات میں بہترین نتائج دیتا ہے۔ اضافی letter-spacing ایڈجسٹمنٹ صرف ڈیزائن کے زور دینے کے لیے ضروری ہے — مثال کے طور پر، بڑی ٹائپوگرافی والے لینڈنگ پیجز میں۔

کرننگ کنفیگریشن کے لیے عملی سفارشات

کرننگ ایک باریک بینی سے ایڈجسٹمنٹ کا آلہ ہے، اور اس کا غلط استعمال پڑھنے کی اہلیت کو خراب کرتا ہے۔ پہلا قاعدہ: باڈی ٹیکسٹ کے لیے کرننگ تبدیل نہ کریں۔ پیشہ ورانہ فونٹ کی کرننگ ٹیبلز میں 12–16pt سائز کے لیے پہلے سے بہترین اقدار موجود ہیں۔ باڈی ٹیکسٹ کرننگ میں مداخلت عدم یکسانیت اور بصری شور کا باعث بنتی ہے۔

دوسرا قاعدہ: 24pt اور اس سے اوپر کی سرخیوں کے لیے، مثبت کرننگ استعمال کریں (ٹائپ فیس کے لحاظ سے 0.5–1.5 pt)۔ بڑے متن کو پڑھنے کی اہلیت کے لیے زیادہ حرفی فاصلہ درکار ہوتا ہے۔ کم x-height والے فونٹ (مثلاً Didot) کو زیادہ x-height والے فونٹ (مثلاً Helvetica) کے مقابلے میں زیادہ کرننگ درکار ہوتی ہے۔ حوالہ جاتی ڈیٹا: iOS Apple Music ایپ میں، سرخیاں 0.8 pt کرننگ استعمال کرتی ہیں۔

تیسرا قاعدہ: ہمیشہ حقیقی سٹرنگز پر کرننگ ٹیسٹ کریں، Lorem Ipsum پر نہیں۔ مختلف حروف کے مجموعے مختلف بصری اثرات پیدا کرتے ہیں۔ ابھرے ہوئے عناصر والے حرف علت اور حرف صحیح کے جوڑوں پر خصوصی توجہ دیں: AV، Te، To، Wa، LT۔ منفی کرننگ کے ساتھ، fi، fl، fj جوڑوں پر نظر رکھیں — کچھ فونٹ میں وہ بغیر ligature کے ضم ہو سکتے ہیں۔

قابلیت کا پہلو: ڈسلیکسیا کے شکار صارفین ہلکی مثبت کرننگ (0.3–0.5 pt) والے متن کو بہتر پڑھتے ہیں۔ iOS اور Android قابلیت کی سیٹنگز کو سپورٹ کرتے ہیں جو ایپ کی کرننگ کو اوور رائڈ کر سکتی ہیں۔ Dynamic Type کے ساتھ UIFontDescriptor استعمال کریں اور UIAccessibility کے ذریعے قابلیت کی سیٹنگز میں کرننگ کو مدنظر رکھیں۔ اہم: سسٹم کرننگ سیٹنگز کو مسدود نہ کریں — یہ متن کی موافقت سے متعلق WCAG 2.2 رہنما اصول 1.4.12 کی خلاف ورزی ہے۔

اکثر پوچھے جانے والے سوالات

iOS پر کرننگ کو کیسے غیر فعال کریں؟

NSAttributedString میں .kern = 0 خاصیت سیٹ کریں۔ قدر 0 بلٹ ان فونٹ ٹیبلز سمیت تمام کرننگ جوڑوں کو زبردستی صفر کرتی ہے۔ پورے متن کی سطح پر مکمل غیر فعالی کے لیے، attributedText کے ذریعے UILabel پیرامیٹرز میں .kern = 0 سیٹ کریں۔

کرننگ لیگیچر سے کیسے مختلف ہے؟

کرننگ حروف کے درمیان فاصلہ تبدیل کرتی ہے، ان کی شکلیں برقرار رکھتی ہے۔ لیگیچر دو یا زیادہ حروف کو ایک ہی گلائف سے بدل دیتا ہے۔ لیگیچر اکثر وہاں استعمال ہوتے ہیں جہاں کرننگ ناپسندیدہ ضم کو ختم نہیں کر سکتی — مثال کے طور پر، fi جوڑا۔

کیا Android فونٹ کرننگ ٹیبلز کو سپورٹ کرتا ہے؟

ہاں، Android 10 (API 29) سے Minikin رینڈرنگ OpenType GPOS feature kern کی مکمل سپورٹ کے ساتھ استعمال ہوتی ہے۔ پرانے ورژنز پر، سپورٹ ڈیوائس بنانے والے اور HarfBuzz ورژن پر منحصر ہے۔ متعدد آلات پر ٹیسٹ کرنے کی سفارش کی جاتی ہے۔

فونٹ کی کرننگ ٹیبل کے معیار کو کیسے چیک کریں؟

AVOWaToLt سٹرنگ استعمال کریں — اس میں مسئلہ والے کرننگ جوڑے ہیں۔ اگر بصری خلا ننگی آنکھ سے نظر آتا ہے تو فونٹ کی کرننگ ٹیبل کا معیار کم ہے۔ پیشہ ورانہ جانچ کے لیے FontForge یا Glyphs ٹولز استعمال کریں۔

کیا کرننگ فہرست کی کارکردگی کو متاثر کرتی ہے؟

ہاں۔ UICollectionView میں کرننگ کے ساتھ NSAttributedString کو متحرک طور پر اپ ڈیٹ کرتے وقت، حروف کی پوزیشنوں کا دوبارہ حساب اسکرولنگ کے دوران FPS کم کر سکتا ہے۔ لمبی فہرستوں کے لیے، منسوب سٹرنگز کو کیش کریں یا ڈیفالٹ سیٹنگز کے ساتھ UILabel استعمال کریں۔

خلاصہ

  • کرننگ — ان کی جیومیٹری کی بنیاد پر حروف کے جوڑوں کے درمیان فاصلے کی انتخابی اصلاح
  • ٹریکنگ سے مختلف: کرننگ جوڑوں کے ساتھ کام کرتی ہے، ٹریکنگ تمام حروف پر یکساں طور پر لاگو ہوتی ہے
  • iOS پر NSAttributedString میں .kern کے ذریعے لاگو، nil — ٹیبل سے کرننگ، 0 — غیر فعال
  • Android پر TextView میں letterSpacing (API 21+) کے ذریعے کنٹرول، لیکن جوڑی کرننگ فونٹ ٹیبل پر منحصر
  • ویب پر کرننگ font-kerning: normal کے ذریعے فعال ہوتی ہے، اضافی letter-spacing کے ساتھ
  • باڈی ٹیکسٹ 12–16pt کے لیے کرننگ تبدیل کرنے کی سفارش نہیں کی جاتی — پیشہ ورانہ فونٹ پہلے سے بہتر بنائے گئے ہیں
  • قابلیت کے لیے، ڈسلیکسیا کے شکار صارفین کے لیے 0.3–0.5pt مثبت کرننگ استعمال کریں

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں