النص والطباعة في تطوير التطبيقات المحمولة: ما هما، وما الأدوات، وكيف يعملان

المؤلف: IT Sectr نُشر: 2026-08-04 وقت القراءة: 10 دق

العمل مع النص هو مهمة أساسية عند إنشاء واجهات التطبيقات المحمولة الحديثة. من اختيار الخط إلى ضبط التباعد بين الأحرف — كل جانب يؤثر على إدراك المنتج. وفقًا لوثائق Apple NSAttributedString، فإن تنسيق النص الصحيح مرتبط مباشرة بقابلية القراءة وإمكانية الوصول للواجهة.

النقاط الرئيسية

  • NSAttributedString — فئة iOS لإنشاء نص منسق بسمات الخط واللون والتباعد.
  • SpannableString — المكافئ على Android الذي يستخدم كائنات Span لتصميم أجزاء نصية فردية.
  • UIFont و Typeface — فئات الخطوط الرئيسية على iOS وAndroid؛ تتم إضافة الخطوط المخصصة عبر Info.plist و res/font.
  • الكيرنينغ والروابط الطباعية — معلمات طباعية تتحكم في التباعد بين الأحرف ودمجها في حرف رسومي واحد.
  • الخطوط المتغيرة — ملف خط واحد يحتوي على أنماط متعددة، مما يقلل حجم التطبيق.

النص في التطبيقات المحمولة: NSAttributedString على iOS

NSAttributedString هي الفئة الأساسية في iOS للعمل مع النص المنسق. تسمح بتطبيق السمات على أحرف أو نطاقات فردية: الخط عبر UIFont، اللون عبر UIColor، التباعد بين الأحرف عبر kern، والتباعد بين الأسطر عبر NSMutableParagraphStyle. في التطبيقات المحمولة، تُستخدم NSAttributedString في كل مكان — من UILabel إلى UITextView المعقد مع دعم التحرير.

UIFont وتكوين الخط

UIFont هي الفئة الرئيسية للعمل مع الخطوط على iOS. تدعم خطوط النظام والخطوط المخصصة و Dynamic Type. يقوم UIFont(name:size:) بتحميل خط بالاسم، و UIFont.systemFont(ofSize:weight:) بتحميل خط النظام. يسمح UIFontDescriptor بتعديل خط موجود: تغيير الحجم أو الوزن أو إضافة مصفوفة تحويل. للخطوط المخصصة، يُضاف ملف .ttf إلى المشروع ويُسجل في Info.plist تحت مفتاح Fonts provided by application.

swift
let attributes: [NSAttributedString.Key: Any] = [
    .font: UIFont(name: "HelveticaNeue-Bold", size: 18) as Any,
    .foregroundColor: UIColor.darkGray as Any,
    .kern: 1.5 as Any
]
let attributedString = NSAttributedString(
    string: "Форматированный текст",
    attributes: attributes
)
label.attributedText = attributedString

NSMutableParagraphStyle وتنسيق الفقرات

NSMutableParagraphStyle هو نسخة قابلة للتعديل من ParagraphStyle لتكوين عرض الفقرات. يتحكم في المحاذاة (alignment)، والتباعد بين الأسطر (lineSpacing)، والمسافات البادئة (headIndent، tailIndent)، ووضع القطع (lineBreakMode). يعتبر ParagraphStyle ضروريًا لقابلية قراءة النصوص الطويلة على الأجهزة المحمولة: lineSpacing المناسب يمنع تداخل الأسطر، و lineBreakMode يمنع قص الكلمات. يحدد إعداد paragraphSpacing المسافة بين الفقرات.

النص في التطبيقات المحمولة: SpannableString على Android

SpannableString هي الأداة الرئيسية لتنسيق النص على Android. تعمل من خلال آلية كائنات Span، كل منها مسؤول عن جانب واحد: StyleSpan للخط العريض أو المائل، ForegroundColorSpan للون، URLSpan للروابط، UnderlineSpan للتسطير. SpannableStringBuilder هو المكافئ لـ NSMutableAttributedString، مما يسمح ببناء النص من أجزاء متعددة. فهم SpannableString ضروري لإنشاء واجهات مرنة بنص منسق في التطبيقات المحمولة.

Typeface والخطوط المخصصة على Android

Typeface هي فئة العمل مع الخطوط على Android. تدعم خطوط النظام Roboto و Noto، بالإضافة إلى الخطوط المخصصة. يقوم Typeface.createFromResource() بتحميل خط من res/font/، و Typeface.createFromAsset() من مجلد assets. يدعم Android 8.0+ عائلات الخطوط في XML، مما يجمع ملفات خطوط متعددة في مورد واحد. يتم تعيين خط مخصص للنص في التطبيقات المحمولة على Android عبر السمة android:fontFamily أو برمجيًا باستخدام setTypeface().

TextMeasurer وقياس النص

TextMeasurer (API 29+) هي أداة حديثة لقياس النص دون الارتباط بـ View. تحسب العرض والارتفاع ومواضع الأحرف قبل العرض. في واجهات API القديمة، يُستخدم Paint.measureText() للنص أحادي السطر أو StaticLayout للنص متعدد الأسطر. TextMeasurer مفيد بشكل خاص في Views المخصصة حيث يُرسم النص عبر Canvas.drawText(). القياس الصحيح يمنع قص الأحرف في الواجهة.

kotlin
val spannable = SpannableString("Жирный текст с цветом")
spannable.setSpan(
    StyleSpan(Typeface.BOLD),
    0, 6,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannable.setSpan(
    ForegroundColorSpan(Color.RED),
    14, 19,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable

الطباعة في تطوير التطبيقات المحمولة: الكيرنينغ والروابط والتتبع

الطباعة في التطبيقات المحمولة هي تكوين شامل للخطوط والتباعد بين الأحرف والأسطر. تؤثر الطباعة الصحيحة في تطوير التطبيقات المحمولة بشكل مباشر على قابلية قراءة النص والإدراك البصري للواجهة. دعنا نلقي نظرة على المعلمات الرئيسية المتاحة على كلا المنصتين.

الكيرنينغ والتتبع

الكيرنينغ هو ضبط المسافة بين أزواج أحرف محددة (AV، To، Wa). التتبع هو التباعد المنتظم بين الأحرف للنص بأكمله أو جزء منه. على iOS، يُضبط الكيرنينغ عبر NSKernAttributeName، على Android — عبر خاصية letterSpacing في TextView. القيم السالبة تقرب الأحرف، والقيم الموجبة تباعدها. تتطلب الطباعة في تطوير التطبيقات المحمولة ضبطًا دقيقًا لهذه المعلمات: للعناوين الكبيرة، عادةً ما يُزيد التباعد بين الأحرف، بينما يبقى قياسيًا للنص الأساسي.

المعلمةiOSAndroid
نص منسقNSAttributedStringSpannableString
الخطUIFont / CTFontTypeface
التباعد بين الأحرفNSKernAttributeNameletterSpacing
التباعد بين الأسطرlineSpacinglineSpacingExtra
الروابط الطباعيةNSLigatureAttributeNameميزات OpenType
القطعlineBreakMode .byTruncatingTailandroid:ellipsize

الروابط الطباعية

الروابط الطباعية هي حروف رسومية خاصة تحل محل مجموعات من حرفين أو أكثر: fi، fl، ffi. على iOS، تُتحكم الروابط الطباعية عبر NSLigatureAttributeName: 0 — معطلة، 1 — قياسية، 2 — جميع المتاحة. على Android، تُتحكم الروابط الطباعية على مستوى الخط عبر ميزات OpenType. يؤدي تمكين الروابط الطباعية إلى تحسين مظهر النص، خاصة في الخطوط ذات الرقيق. تستخدم الطباعة في تطوير التطبيقات المحمولة الروابط الطباعية بشكل أساسي للعناوين والشعارات.

الخطوط المخصصة في التطبيقات المحمولة: التحميل والتكوين

الخطوط المخصصة هي إحدى الأدوات الرئيسية لإنشاء نمط بصري فريد للتطبيق. تساعد في إبراز العلامة التجارية وتحسين تجربة المستخدم. في التطبيقات المحمولة، تُستخدم الخطوط المخصصة للعناوين والشعارات والعناصر البارزة والهوية المؤسسية.

الخطوط المتغيرة

الخطوط المتغيرة هي تقنية خطوط حديثة حيث يحتوي ملف واحد على أنماط متعددة: من الرفيع إلى الغامق جدًا، ومن الضيق إلى العريض. يقلل هذا من حجم التطبيق عن طريق استبدال عدة ملفات خطوط بملف واحد. على iOS، تدعم الخطوط المتغيرة عبر UIFont مع معلمة weight. على Android — عبر Typeface.Builder مع تحديد محاور التباين wght، wdth، slnt. استخدام الخطوط المتغيرة يبسط الطباعة في التطبيقات المحمولة: لا يحتاج المطور إلى تحميل ملفات منفصلة لكل نمط.

swift
let customFont = UIFont(name: "CustomFont-Regular", size: 16)
let scaledFont = UIFontMetrics.default
    .scaledFont(for: customFont)
label.font = scaledFont
label.adjustsFontForContentSizeCategory(true)

NSTextAttachment و ImageSpan

NSTextAttachment على iOS يسمح بتضمين UIImage داخل NSAttributedString — تتم محاذاة الصورة مع خط الأساس وتنتقل مع النص. على Android، المكافئ هو ImageSpan داخل SpannableString. كلا النهجين مفيدان للدردشة مع الرموز التعبيرية، وتغذية الأخبار بالأيقونات، والنماذج مع مربعات الاختيار المخصصة. من المهم تغيير حجم الصورة بشكل صحيح ليتناسب مع ارتفاع الخط بحيث يبدو النص والرسومات متناغمين.

تأثيرات النص والمحاذاة والقطع

بالإضافة إلى التنسيق الأساسي، يدعم النص في التطبيقات المحمولة تأثيرات بصرية إضافية: الظلال والمخطط التفصيلي والتشطيب والتسطير. توسع هذه الأدوات إمكانيات الطباعة ولكنها تتطلب تطبيقًا دقيقًا للحفاظ على قابلية القراءة.

ظل النص ومخططه التفصيلي

ظل النص على iOS يُضبط عبر NSShadow مع offset و blurRadius و color. المخطط التفصيلي — عبر NSStrokeWidthAttributeName: القيم السالبة تنشئ تعبئة بمخطط تفصيلي، القيم الموجبة تنشئ المحيط فقط. التشطيب — NSUnderlineStyle (.single، .thick، .double). على Android، يتم تكوين ظل TextView عبر android:shadowRadius و android:shadowDx و android:shadowDy. يدعم SpannableString StrikethroughSpan و UnderlineSpan. يتم تنفيذ المخطط التفصيلي للنص على Android عبر OutlineSpan أو خط مخصص.

القطع والشريط المتحرك

القطع هو اقتطاع النص بعلامات الحذف عند تجاوز الحاوية. على iOS، يتم تكوينه عبر lineBreakMode .byTruncatingTail و numberOfLines. على Android — عبر android:ellipsize="end" و android:maxLines. الشريط المتحرك هو رسم متحرك لنص متحرك متاح على Android عبر android:ellipsize="marquee". على iOS، لا يوجد مكافئ مدمج — تُستخدم مكتبة MarqueeLabel. القطع إلزامي لجميع النصوص أحادية السطر في التطبيقات المحمولة لتجنب قص المحتوى.

Dynamic Type على iOS

Dynamic Type هو نظام نص تكيفي في iOS يضبط حجم الخط بناءً على إعدادات إمكانية الوصول للمستخدم. استخدم UIFontMetrics لتوسيع نطاق الخطوط المخصصة. Dynamic Type إلزامي للتطبيقات المتوافقة مع إمكانية الوصول. على Android، المكافئ هو وحدات sp و scaledPixels، التي تتوسع وفقًا لإعدادات حجم النص في النظام.

الأسئلة الشائعة

ما هو NSAttributedString؟

NSAttributedString هي فئة iOS لإنشاء نص منسق بسمات الخط واللون والنمط على مستوى الأحرف والنطاقات.

ما هو SpannableString على Android؟

SpannableString هي فئة Android لترميز النص عبر كائنات Span: ForegroundColorSpan و StyleSpan و URLSpan و UnderlineSpan.

كيف أضيف خطًا مخصصًا في iOS؟

أضف ملف .ttf إلى المشروع، وحدده في Info.plist تحت مفتاح Fonts provided by application، ثم استخدم UIFont(name:).

كيف أحمل خطًا مخصصًا على Android؟

ضع ملف .ttf في res/font/، وأنشئ عائلة خطوط XML، وحدد android:fontFamily أو استخدم Typeface.createFromAsset().

ما هما الكيرنينغ والروابط الطباعية؟

الكيرنينغ هو المسافة بين أزواج الأحرف. الروابط الطباعية هي حروف رسومية خاصة لمجموعات الحروف. يتم التحكم بهما عبر NSKernAttributeName و NSLigatureAttributeName.

الخلاصة

  • NSAttributedString — الأداة الرئيسية لتنسيق النص على iOS، تدعم الخطوط والألوان والتباعد بين الأحرف وأنماط الفقرات.
  • SpannableString — المكافئ على Android باستخدام كائنات Span: StyleSpan للوزن، ForegroundColorSpan للون، URLSpan للروابط.
  • UIFont و Typeface — فئات الخطوط على iOS وAndroid؛ تتم إضافة الخطوط المخصصة عبر Info.plist و res/font على التوالي.
  • الكيرنينغ والتتبع — يتحكمان في التباعد بين الأحرف؛ الكيرنينغ للأزواج الفردية، والتتبع بشكل منتظم للنص بأكمله.
  • الروابط الطباعية — تستبدل مجموعات الأحرف بحروف رسومية مفردة؛ تُتحكم عبر NSLigatureAttributeName على iOS و OpenType على Android.
  • الخطوط المتغيرة و Dynamic Type — تقنيات حديثة: ملف واحد لأنماط متعددة وتكيف تلقائي مع إعدادات المستخدم.
  • الطباعة في تطوير التطبيقات المحمولة تشمل الخطوط والتباعد بين الأسطر والروابط الطباعية والظلال والقطع لضمان قابلية القراءة.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع