searched again 2026-05-06
من أين جاء الرقم 1.7؟
ابحث عن ارتفاع السطر المناسب للنص العربي على الويب، فيعود إليك الرقم نفسه من عشرات مقالات الوكالات ومدوّنات التصميم: 1.7، وأحيانًا 1.8، وأحيانًا مصوغًا على أنه مرّة ونصف ما تستعمله للّاتينية. المقالات تتفق فيما بينها. ولا واحدة منها تتفق مع مصدر.
تتبّع الإحالات مفيد. أكثرها يحيل إلى مقال آخر يعطي الرقم نفسه بلا مصدر. وعدد منها يستشهد بتقرير لا وجود له. والبقية تقدّم الرقم على أنه بديهي، وهو الشيء الوحيد الذي لا يمكن أن يكونه في كتابة يتفاوت امتدادها الرأسي بين خطٍّ وآخر أكثر مما يتفاوت في اللاتينية.
هذا لا يجعل 1.7 خاطئًا. ففي كثير من الخطوط العربية بحجم المتن يقع مرتاحًا فوق الحدّ الأدنى، ولذلك لم يسِئ إلى أحد إساءةً بالغة. لكنه يجعله رقمًا غير قابل للتكذيب، والرقم غير القابل للتكذيب رقم لا تستطيع تنقيحه حين تتصادم عناوينك رغمًا عنه.
CSS Inline Layout, half-leading
ما يتصادم فعلًا هو الحبر، لا الصناديق
صندوق السطر ليس على شكل الحبر الذي بداخله. المتصفّح يبني كل سطر من مقاييس الخط: الصعود فوق خطّ الأساس، والنزول تحته، والفارق بين مجموعهما وبين ارتفاع السطر، وهو فارق يُقسَم بالتساوي أعلى وأسفل باسم نصف الفراغ البيني (half-leading). وحين يصير ارتفاع السطر أصغر من صندوق محتوى الخط، يصير نصف الفراغ سالبًا ويفيض الحبر خارج صندوق سطره في الاتجاهين معًا.
لهذا قد تبدو الفقرة العربية سليمة ويظلّ العنوان العربي متصادمًا عند النسبة نفسها. فالفقرة مضبوطة عند حجم يكون فيه الصعود والنزول صغيرين بالقيمة المطلقة؛ والعنوان ليس كذلك. ولهذا أيضًا يجب طرح السؤال بوحدات em من الحبر لا بمضاعفات حجم الخط.
والعربية تجعل الفارق بين الصندوق والحبر أكبر مما تجعله اللاتينية، لسبب بعينه: العلامات. فالياء في آخر الكلمة تحمل نقطتين تتدلّيان قرابة نصف em تحت خطّ الأساس، والألف الحاملة للهمزة تحمل علامة تعلو الألف المجرّدة بوضوح. وليس أيٌّ منهما حالة شاذّة — كلاهما حرف عادي في كلمة عادية.
- الصعود (ascent)
- إلى أي مدى يرتفع أعلى حبر في السطر فوق خطّ الأساس، ككسر من em. في Zain يتفاوت هذا بين 0.716 للألف المجرّدة و1.024 للألف الحاملة للهمزة.
- النزول (descent)
- إلى أي مدى ينزل أعمق حبر تحته. النقطتان تحت الياء في آخر الكلمة، وكأس العين في آخرها، هما المرشّحان المعتادان.
- size-adjust
- مُعامل يُطبَّق على الخط كلّه، بما في ذلك مقاييسه. والحدّ الأدنى المحسوب قبله خاطئ بمقدار هذا المعامل بالضبط.
fontTools 4.x, five minutes
كيف تحسب الحدّ الأدنى لنصوصك أنت
الطريقة قصيرة بما يكفي لتشغّلها مرّة واحدة لكل خط ثم تنساها. تحتاج ملف الخط، والنصوص التي تنشرها، ووسيلة لقراءة صناديق إحاطة المحارف — وfontTools هي الوسيلة المعتادة.
from fontTools.ttLib import TTFont
font = TTFont(path)
upem = font[head].unitsPerEm
glyf = font[glyf]
cmap = font.getBestCmap()
def extent(text):
lo, hi = 0, 0
for ch in text:
g = glyf[cmap[ord(ch)]]
if g.numberOfContours == 0: continue
lo = min(lo, g.yMin); hi = max(hi, g.yMax)
return lo / upem, hi / upem
# الحدّ الأدنى لانكسار واحد = |نزول السطر الأعلى| + صعود السطر الأسفل
floor = abs(extent(upper)[0]) + extent(lower)[1]
- اسرد النصوص التي تهمّ لا محتواك كلّه. بل نصوص العرض — العناوين، وأسطر الوقع، وكل ما يُضبط بحجم يجعل التصادم مرئيًا. والنص الجاري بحجم المتن نادرًا ما يكون الحالة الحاسمة.
- أحصِ مواضع الانكسار لكل نص، كل حدّ كلمة يمكن أن ينكسر عنده. عنوان من ثلاث كلمات فيه موضعان. وكل انكسار يعطيك سطرًا أعلى وسطرًا أسفل.
- قِس الطرفين للسطر الأعلى، أعمق yMin بين محارفه. وللسطر الأسفل، أعلى yMax. وكلاهما ككسر من unitsPerEm.
- اجمعهما الحدّ الأدنى لذلك الانكسار هو القيمة المطلقة لنزول السطر الأعلى مضافًا إليها صعود السطر الأسفل. وتحت هذا الرقم يتقاسم السطران البكسلات نفسها.
- طبّق size-adjust اضرب في أي size-adjust أُعلن به الخط. فالمواصفة تطبّق الضبط على مقاييس الخط، ومن ثمّ يتحرّك الحبر معه.
- خذ الأكبر، ثم أضف هواءً أسوأ انكسار عبر نصوصك كلّها هو الحدّ الأدنى. وانشر فوقه بهامش تختاره عن قصد، لا بنسبة ورثتها.
تفصيلان يسهل الخطأ فيهما. تجاوز المحارف التي لا كنتورات لها، وإلا سحبت المسافة نزولك إلى صفر وأخفت التصادم. وقِس الشكل المركّب — ففي العربية تكون النقاط والهمزة مكوّنات منفصلة تُجمَّع عند العرض، والبحث الساذج الذي يفوّتها سيخبرك أن الألف الحاملة للهمزة بارتفاع الألف المجرّدة نفسه.
Zain, size-adjust 112% and 103%
النصوص الأربعة التي تحدّد الرقم على هذا الموقع
ينشر هذا الموقع أربعة نصوص عرض عربية يمكن أن تنكسر. وتشغيل القياس عليها جميعًا، عند كل حدّ كلمة يمكن أن ينكسر عنده كلٌّ منها، أنتج أربعة حدود دنيا وقرارًا واحدًا.
| النص | أين يظهر | الحدّ الأدنى المحسوب |
|---|---|---|
| دائمًا | أستكشف الفكرة التالية | عبارة التذييل | 1.3944 |
| مشاريع | مختارة | عنوان المشاريع | 1.2952 |
| خمس | دورات شهادة واحدة | قسم الشهادة | 1.2412 |
| لغات | & تقنيات | شبكة التقنيات | 1.1549 |
والقيمة المنشورة 1.45. تعلو أسوأ الأربعة بمقدار 5.6 بالمئة من em، وهو ما يكفي لألّا يتحوّل تحديثٌ للخط بمقاييس مختلفة قليلًا إلى تصادم فوري، ويقلّ بما يكفي لألّا تتباعد العناوين العربية بعضها عن بعض.
ولاحظ كم تبعد الأربعة بعضها عن بعض. الفارق بين أضيق نص وأوسعه 0.24 em — أكبر من المسافة بين 1.45 وأي نسبة في النصائح المتداولة. والرقم المختار لمتوسّط محتواك رقم خاطئ لطرفيه.
measured on the Zain outlines
لماذا الحالة الحاسمة ألف تحمل همزة
نص التذييل يتفوّق بـ0.10 em على الذي يليه سوءًا، وهو يتفوّق بحرف واحد. فسطره الثاني يبدأ بألف تحمل همزة، وتلك العلامة هي ما يغيّر الحساب. والشكلان موضوعان جنبًا إلى جنب أدناه بالحجم نفسه.
- 0.716 plain alef ا الشكل الرأسي العادي
- 1.024 hamza-bearing alef أ العلامة تتجاوز صندوق em
- +43% الفارق علامة واحدة، على السطر كلّه
الجملة العرضية التي يمكن أن تضع إحدى هاتين في سطر ثانٍ هي ما يحدّد الرقم. وتلك حقيقة عن المحتوى لا عن الطباعة — ولهذا يجب أن يجري القياس على نصوصك أنت لا على الأبجدية. والموقع الذي لا تنكسر عناوينه العربية قبل ألف حاملة للهمزة أبدًا له حدّ أدنى أخفض فعلًا، ومن حقّه أن يستعمله.
four roles, four values
رقم واحد لا يكفي للنص الجاري وللعرض معًا
الحدّ الأدنى يجيب عن متى يتصادم الحبر. ولا يجيب عن ما المريح في القراءة، وهذان سؤالان مختلفان بأجوبة مختلفة لأدوار مختلفة. وينتهي هذا الموقع إلى أربعة ارتفاعات سطر عربية، لكلٍّ منها سببه.
النص الجاري يأخذ 1.8 لأنه يُقرأ في أسطر طويلة وتحتاج عودة العين إلى متّسع، لا لأن شيئًا يتصادم عند 1.5. والتسميات تأخذ 1.55 لأنها صغيرة، وأشبه بالحروف الكبيرة، وتقع داخل نافذة قصّ عليها أن تتجاوز نزولها. والعرض يأخذ 1.45 المقيسة. وقسم واحد يأخذ 1.25، لسبب يستحقّ فقرة خاصّة به.
ارتفاع سطر التسميات أعلاه تحدّده نافذة قصّ لا تصادمٌ، ولتلك النافذة حكايتها — الانقلاب الذي يهبط بعيدًا عن خطّ الأساس.
measured at 130.5px, intended 112.5
الاستثناء: عنوان لا يمكن أن ينكسر
قسم واحد من هذا الموقع يركّب عنوانين من كلمة واحدة، كلٌّ منهما كلمة واحدة فوق كلمة واحدة. ولا يمكن لأيٍّ منهما أن ينكسر، فالتصادم الوحيد الممكن هو نزول العنصر الأول في مواجهة صعود العنصر الثاني — وكلاهما محارف معلومة لا مدى من الاحتمالات.
مقيسًا على قطعتَي Zain اللتين يختارهما هذان العنصران: نزول 0.4262 em وصعود 0.7158 em، أي حدّ أدنى قدره 1.1420. والقيمة المنشورة 1.25، وهي تعلوه بمقدار 10.8 بالمئة من em، وتنقل الكتلة العربية من 391 بكسلًا إلى 337 عند 1440 مقابل 247 اللاتينية.
html[lang='ar'] .otot-home-text-w :is(h1, h2, h3) {
line-height: 1.25;
}
- الجانب / البرمجي
- النصف البرمجي من الثنائية. نزول 0.4262 em في الكلمة العليا، وصعود 0.7158 em في السفلى، أي حدّ أدنى قدره 1.1420.
- الجانب / التصميمي
- النصف التصميمي. الكلمة العليا نفسها، والسفلى أقصر في الامتداد الرأسي، فليس هذا الزوج هو الحالة الحاسمة.
نُشرت في ملف القسم أوّل الأمر، فعُرضت عند 130.5 بكسل حيث كان المقصود 112.5، لأن القاعدة الشاملة لعناوين العرض في ورقة اللغة كانت في طبقة لاحقة فانتصرت. هكذا اكتُشفت القاعدة، ولهذا صارت الآن إلى جانب الرقم الذي هي استثناء له.
حجّة طبقات التتالي نفسها تحسم عدّة تصحيحات عربية أخرى على هذا الموقع — انظر علل الاتجاه من اليمين إلى اليسار السبع التي لا تصلحها الخصائص المنطقية.
a checklist, not a ratio
ماذا تفعل على موقعك أنت
إن أخذت شيئًا واحدًا من الحساب أعلاه، فخذ شكل السؤال لا أيًّا من الأرقام. أرقامي هي Zain عند قيمتَي size-adjust فوق أربعة نصوص بعينها؛ وأرقامك ستكون خطًّا آخر فوق كلمات أخرى، وسيقع الحدّ الأدنى في مكان آخر.
- قِس قبل أن تختار
- شغّل قياس الامتدادات على نصوص العرض عندك مرّة واحدة. يستغرق دقائق، ويستبدل برقم لا يستطيع أحد الدفاع عنه رقمًا تستطيع أنت الدفاع عنه.
- افعلها بعد size-adjust
- إن كنت تطابق خطًّا عربيًا بخطّ لاتيني عبر size-adjust، فالحبر يتحرّك مع الضبط. احسب الحدّ الأدنى عند القيمة المنشورة، لا عند 100 بالمئة.
- افصل العرض عن النص الجاري
- هما يُقرآن على ارتفاعين مختلفين ويتصادمان عند ارتفاعين مختلفين. والقيمتان ليستا ترددًا، بل جوابان لسؤالين.
- انتبه لنوافذ القصّ
- أي تأثير يقصّ تسمية — دورة، أو قناع، أو صندوق بارتفاع ثابت — له علاقته الخاصة بالنزول، وفتح صندوق السطر دون تحريك القصّ هو الطريق إلى قطع النقطتين من ياء آخر الكلمة.
- لا تباعد بين الحروف أبدًا
- لا علاقة له بارتفاع السطر، ويستحقّ أن يُقال في النفَس نفسه: التباعد يفكّك كتابةً متّصلة. وهو التجاوز الشامل الوحيد الذي يستحقّ أن يُطبَّق على الموقع كلّه.
لمشكلة نافذة القصّ مقالها الخاص، لأنها الموضع الذي يتحوّل فيه ارتفاع السطر الخاطئ إلى حرف خاطئ: ضبط حجم خطّ عربي حين لا يعني ارتفاع الـx شيئًا.
وإن كنت تختار خطًّا عربيًا لموقع ثنائي اللغة، فالنصف المتعلّق بالمقاييس من هذا السؤال هو قياس السنّ والألف.