انتقل إلى المحتوى الرئيسي

الفصل 10 · الجزء II · الحرفة

الإعدادات: القصص المصورة

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

آخر تحديث 2026-10-103 دقائقenescaptzhjaar

باختصار

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

#القصص المصورة

تضبط الخاصية comics صفحات القصص المصورة (:::page) والشرائط المصورة (:::strip) والصفحات المزدوجة: الإطار العام والفواصل التي تُقطع منها الإطارات، وأنماط الإطارات، وكتابة الحوار، وأنماط الفقاعات، وقائمة الشخصيات. ولا يقرؤها إلا المستند الذي فيه قصص مصورة؛ فالمستند الذي ليس فيه شيء منها يُخرَج كما كان يُخرَج تمامًا، والمستند الذي فيه قصص مصورة وليس فيه قسم comics يأخذ القيم الافتراضية للغته. ويشرح دليل القصص المصورة الترميز وطريقة كتابة حوار الصفحات.

const config: PostextConfig = {
  comics: {
    readingDirection: 'auto',
    gutter: { horizontal: { value: 5, unit: 'mm' }, vertical: { value: 2.5, unit: 'mm' } },
    panel: { borderWidth: { value: 0.8, unit: 'pt' }, borderStyle: 'rough' },
    panelStyles: [{ id: 'night', background: { hex: '#14142b', model: 'hex' }, borderColor: { hex: '#ffffff', model: 'hex' } }],
    lettering: { fontSize: { value: 8.5, unit: 'pt' }, textTransform: 'uppercase' },
    balloonStyles: [{ id: 'eerie', shape: 'wavy', italic: true }],
    cast: [{ id: 'maya', name: 'مايا' }, { id: 'tomas', name: 'الجد توماس' }],
  },
};
الخاصيةالنوعالقيمة الافتراضيةالوصف
readingDirection'auto' | 'ltr' | 'rtl''auto'ترتيب الإطارات في الصف. 'auto' يقرأ من اليمين إلى اليسار في المستند المكتوب من اليمين إلى اليسار وفي المستند العمودي وفي اليابانية والصينية التقليدية، وفي اتجاه artDirection فيما سواه (ومنه الصينية المبسطة والكورية). وسمة direction في الصفحة تتقدّم عليه. ومع page.binding: 'auto' يُجلَّد على اليمين الكتاب الذي تُقرأ قصصه المصورة من اليمين إلى اليسار.
artDirection'ltr' | 'rtl''ltr'اتجاه القراءة الذي رُسمت له الرسوم: 'rtl' للمانغا.
mirrorArtbooleanfalseاقلب رسوم الصفحة التي تُقرأ بعكس اتجاه artDirection. ويبقي الإطار رسمه كما رُسم مع mirror=false.
frame.marginsPageMarginsهوامش الصفحةهوامش خاصة بصفحات القصص المصورة (top وbottom وleft وright وmirror). تُقطع الإطارات من الصندوق الذي تتركه؛ وإن لم تُحدَّد فمن منطقة النص في الصفحة.
gutter.horizontalDimension4mmالمسافة بين الصفوف. وسمة gutter في الصفحة تتقدّم عليها.
gutter.verticalDimension2mmالمسافة بين الإطارات المتجاورة في الصف.
panelPanelStyleConfigانظر أدناهنمط الإطار الافتراضي.
panelStylesNamedPanelStyleConfig[][]أنماط إطارات مسمّاة، تُختار بـ :::page{style=…} أو ::panel{style=…}. لكل منها id، وname اختياري (لواجهات التحرير وحدها)، وحقول نمط الإطار؛ والحقول غير المحددة تتبع panel.
letteringLetteringConfigانظر أدناهخط كل فقاعات الكتاب وحجمها وقواعد الدار فيها.
balloonStylesBalloonStyleConfig[]الأنماط المدمجة التسعةأنماط الفقاعات بحسب نوعها. الأنماط المدمجة موجودة دائمًا؛ والمدخل الذي يحمل معرّف أحدها يغيّره، والمدخل الذي يحمل معرّفًا جديدًا يضيف نمطًا يُطبَّق فوق speech.
castComicCastMember[][]الشخصيات (انظر الشخصيات).
runningHeadsbooleanfalseاطبع الترويسات وأرقام الصفحات في صفحات القصص المصورة. وحين يكون معطّلًا تكون صفحة القصة كلها إطارات، ويظل رقمها محسوبًا.
viewerLeafComicViewerLeafConfigغير محددللمضيفات التي ليست صفحاتها أوراقًا: يُخرج صفحات القصص المصورة على ورقة طباعة (width وheight وmargins) مصغّرة إلى fitWidth px (وبارتفاع لا يزيد على fitHeight px) في أعلى الصفحة. يضبطه عارض HTML في Sandbox، ولا يُحفظ أبدًا مع المستند.

#أنماط إطارات القصص المصورة

comics.panel وكل مدخل في comics.panelStyles:

الخاصيةالنوعالقيمة الافتراضيةالوصف
borderWidthDimension1ptسُمك الحدّ؛ والقيمة 0 لا ترسم حدًّا. ويُخطّ الحدّ على محيط الإطار.
borderColorColorValueأسودلون الحدّ (يمكن ربطه بلوحة الألوان).
borderRadiusDimension0نصف قطر زوايا الإطار المستطيل، ولا يتجاوز نصف ضلعه الأقصر. والإطار الذي يقطعه خط مائل تبقى زواياه حادة.
borderStyle'solid' | 'rough' | 'none''solid'خط نظيف، أو خط مرسوم باليد يهتز قليلًا (مشتق من الإطار، فيبقى هو نفسه في كل تنضيد)، أو بلا حدّ.
backgroundColorValueأبيضالتعبئة تحت الرسم: لون الإطار الفارغ، ولون الأشرطة حول الرسم المعروض كاملًا.
fit'cover' | 'contain''cover'cover يقصّ الرسم ليملأ الإطار، ولا يقصّ داخل منطقته الآمنة أبدًا؛ وcontain يعرضه كاملًا.
bleedbooleanfalseالإطارات التي بهذا النمط تتجاوز الإطار العام إلى حدّ القصّ ومنطقة النزف من كل جانب يلامسه.

#كتابة الحوار

يضبط comics.lettering كل فقاعات الكتاب. للحوار حجم واحد: يمكن لنمط الفقاعة أن يغيّره بنسبة (fontScale)، ولا يُصغَّر النص أبدًا ليتسع في فقاعة.

الخاصيةالنوعالقيمة الافتراضيةالوصف
fontFamilystringحسب اللغةخط كتابة الحوار. إن لم يُحدَّد: Comic Neue؛ وZen Antique في اليابانية، وNoto Sans SC في الصينية المبسطة، وLXGW WenKai TC في الصينية التقليدية، وPlaypen Sans Arabic في العربية والفارسية والأردية (defaultComicFont(locale)).
fontSizeDimension7.5ptحجم نص الفقاعات. ويُكتب حوار القصص المصورة عادةً بحجم 7 إلى 9 نقاط على الصفحة المطبوعة.
lineHeightnumber1.15المسافة بين الأسطر، مضاعفًا للحجم. وإذا تُرك على قيمته الافتراضية أخذت الفقاعات العمودية والصينية واليابانية 1.5، والعربية 1.45.
colorColorValueأسودلون النص.
bold، italicbooleanfalseاجعل كتابة الحوار كلها عريضة أو مائلة. ولا يُمال حوار الصينية واليابانية والعربية أبدًا.
letterSpacingDimension0مسافة إضافية بين الحروف؛ وem نسبةً إلى حجم النص. ولا تُطبَّق على العربية أبدًا.
writingMode'auto' | 'horizontal' | 'vertical''auto''auto' يكتب حوار اليابانية والصينية التقليدية، وحوار أي مستند منضَّد بالكتابة العمودية، في أعمدة عمودية، وكل ما سوى ذلك أفقيًا. وتنضّد علامة vertical أو horizontal في سطر الحوار ذلك السطر على خلاف ذلك (انظر القصص المصورة › كتابة الحوار).
textTransform'none' | 'uppercase''none'الأحرف الكبيرة كلها، المظهر التقليدي لكتابة الحوار في القصص الأمريكية والأوروبية. والكتابات التي لا تعرف الأحرف الكبيرة تبقى كما هي.
dropFinalStop'auto' | boolean'auto'احذف النقطة التي تُنهي الفقاعة (。 في المانغا). 'auto': في اليابانية والصينية فقط.
doubleDashbooleanfalseاكتب الشرطة الطويلة --، وهي عادة في كتابة حوار القصص الأمريكية.
insetDimension1.5mmالمسافة المتروكة بين الفقاعة وحدّ إطارها. والتعليق السردي الملاصق للحدّ لا يلتزم بها.
joinSameSpeaker'butt' | 'connector' | 'none''butt'فقاعتان متتاليتان للمتحدث نفسه: جسمان مدموجان في محيط واحد، أو موصولان بعنق ضيق، أو منفصلان. ويطلب سطر الحوار ما يريد بـ join أو join=false.
maxColumnCharsnumber8في الكتابة العمودية: أكبر عدد من الحروف في عمود واحد من الفقاعة. والمؤثرات الصوتية تنكسر بعد خمسة.

#أنماط الفقاعات

كل مدخل في comics.balloonStyles يُطبَّق فوق النمط المدمج الذي يحمل المعرّف نفسه (speech وthought وwhisper وshout وradio وcaption وinner وnote وsfx)، أو فوق speech إن كان معرّفه جديدًا. والقيم الافتراضية أدناه قيم speech؛ وتسرد صفحة القصص المصورة ما يغيّره كل نمط مدمج. والأطوال بوحدة em نسبةً إلى حجم نص الفقاعة.

الخاصيةالنوعالقيمة الافتراضيةالوصف
idstringمطلوبالكلمة التي يسمّي بها سطر الحوار النمط: ben{whisper}: … أو style=whisper.
namestringidاسم مقروء، لواجهات التحرير وحدها.
shape'oval' | 'rounded' | 'rectangle' | 'cloud' | 'burst' | 'wavy' | 'electric' | 'none''oval'المحيط المرسوم حول النص. و'none' ينضّد النص على الرسم مباشرة.
fillColorValueأبيضتعبئة الفقاعة.
strokeColorValueأسودلون المحيط.
strokeWidthDimension0.6ptسُمك المحيط.
dashbooleanfalseمحيط متقطّع (الهمس).
doublebooleanfalseمحيط مزدوج.
wobblenumber0اهتزاز المحيط كأنه مرسوم باليد، من 0 إلى 1، مشتق من الفقاعة فلا يتغير أبدًا بين تنضيد وآخر.
roundnessnumber2.2أُسّ القطع الناقص الفائق (superellipse) في الشكل البيضاوي: 2 قطع ناقص، والقيم الأعلى أقرب إلى المربع.
burstPointsnumber14عدد رؤوس الانفجار؛ و0 يحسبها من طول المحيط.
burstDepthnumber0.22عمق رؤوس الانفجار، كسرًا من نصف قطر الجسم.
paddingDimension0.55emالهواء بين النص والمحيط.
aspectnumber1.6نسبة العرض إلى الارتفاع التي يسعى إليها تقسيم الأسطر في كتلة النص (الكتابة الأفقية).
tail'curved' | 'wedge' | 'bubbles' | 'zigzag' | 'none''curved'الذيل.
tailWidthDimension0.9emعرض الذيل حيث يخرج من المحيط.
tailReachnumber0.55مدى امتداد الذيل نحو متحدثه، كسرًا من المسافة بين المحيط والفم.
target'mouth' | 'head''mouth'ما يتجه إليه الذيل: فم نقطة الارتكاز، أو رأسها (فقاعات التفكير).
position'auto' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom''auto'موضع الفقاعة حين لا يثبّتها السطر: تضعها كتابة الحوار، أو في زاوية من الإطار أو عند حافة منه.
buttbooleanfalseألصق فقاعة الزاوية أو الحافة بحدّ الإطار (التعليقات السردية).
fontFamilystringخط كتابة الحوارخط هذا النمط. ويأخذ sfx افتراضيًا خط المؤثرات الصوتية في اللغة: Bangers، وDela Gothic One في اليابانية، وZCOOL KuaiLe في الصينية المبسطة، وLXGW WenKai TC في الصينية التقليدية، وLalezar في العربية (defaultComicSfxFont(locale)).
fontScalenumber1حجم النص، مضاعفًا لحجم كتابة الحوار.
bold، italicbooleanقيمة كتابة الحوارنص عريض أو مائل.
colorColorValueقيمة كتابة الحوارلون النص.
textTransform'none' | 'uppercase'قيمة كتابة الحوارالأحرف الكبيرة كلها لهذا النمط.
letterSpacingDimensionقيمة كتابة الحوارمسافة إضافية بين الحروف.
align'center' | 'start''center'محاذاة الأسطر داخل الفقاعة.
haloDimensionبلاسُمك خط يُرسم حول الحروف ليُقرأ النص فوق الرسم (المؤثرات الصوتية).
haloColorColorValueأبيضلون الهالة.
rotatenumber0الدوران بالدرجات، في اتجاه عقارب الساعة. وسمة rotate في السطر تتقدّم عليه.

#الشخصيات

كل مدخل في comics.cast يصف شخصية:

الخاصيةالنوعالقيمة الافتراضيةالوصف
idstringمطلوبمفتاح المتحدث في السيناريو وفي نقاط الارتكاز على الرسوم.
namestringidالاسم الذي يطبعه مُخرَج HTML وكتاب EPUB المتدفق قبل أسطر الشخصية، وتعرضه واجهات التحرير.
balloonStylestringspeechنمط أسطر الشخصية التي لا تسمّي نمطًا.
colorColorValueقيمة النمطلون نص فقاعات الشخصية.
fillColorValueقيمة النمطتعبئة فقاعات الشخصية.
fontFamilystringقيمة النمطخط فقاعات الشخصية.

يتقدّم color وfont في السطر نفسه على قائمة الشخصيات، وتتقدّم قائمة الشخصيات على نمط الفقاعة. ويجوز أن يكون كل لون في القصص المصورة مدخلًا من لوحة الألوان، فيتبعها كأي لون مربوط بها.

const resolved = resolveComicsConfig(config.comics, 'ja');
// => كل الحقول مملوءة؛ والخطان Zen Antique وDela Gothic One
 
const minimal = stripComicsDefaults(config.comics, 'ja');
// => undefined حين يكون كل شيء على قيمته الافتراضية
 
const shout = pickBalloonStyle(resolved, 'shout'); // نمط الصراخ المدمج مع تغييرات الكتاب
const night = pickPanelStyle(resolved, 'night');   // نمط إطار مسمّى، وإلا فالإطار الافتراضي