# الإعدادات: تنضيد نصوص شرق آسيا

> إعدادات cjk: كسر الأسطر وعرض علامات الترقيم والمسافات وشبكة المحارف وروبي وعلامات النصوص الصينية واليابانية والكورية

- نسخة HTML: https://postext.dev/ar/docs/configuration-east-asian
- آخر تحديث: 2026-10-10
- مدة القراءة: دقيقتان
- لغات أخرى: [en](https://postext.dev/en/docs/configuration-east-asian.md), [es](https://postext.dev/es/docs/configuration-east-asian.md), [ca](https://postext.dev/ca/docs/configuration-east-asian.md), [pt](https://postext.dev/pt/docs/configuration-east-asian.md), [zh](https://postext.dev/zh/docs/configuration-east-asian.md), [ja](https://postext.dev/ja/docs/configuration-east-asian.md)

## باختصار

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

## تنضيد نصوص شرق آسيا

تحدّد الخاصية `cjk` طريقة تنضيد النصوص الصينية واليابانية والكورية: الأعراف الإقليمية التي تتبعها، والمواضع التي يجوز فيها كسر أسطرها، وعرض علامات ترقيمها وهل تتدلّى خارج السطر، والمسافة بين حروف الهان (Han) والحروف اللاتينية، وشبكة الحروف في منطقة النص، وكيف تُطبع علامات التوكيد والخطوط الجانبية وقراءات الروبي (ruby) وحواشي الواريتشو (warichu) وعلامات الكانبون في النص. كل الحقول اختيارية، والقيمة `'auto'` تتبع منطقة لغة المستند (`locale`)، فالكتاب الذي إعداده `locale: 'zh-Hant'` يكسر أسطره ويضبط ترقيمه على طريقة تايوان، والذي إعداده `locale: 'ja'` على الطريقة اليابانية، دون أي إعداد آخر. تشرح صفحتا [الإخراج الصيني](https://postext.dev/ar/docs/chinese-layout.md) و[الإخراج الياباني](https://postext.dev/ar/docs/japanese-layout.md) القواعد التي تقوم عليها هذه الإعدادات، مع إعدادين كاملين في كلٍّ منهما. والحقول والقيم اليابانية موجودة منذ postext 1.16.

```ts
interface CjkConfig {
  region?: 'auto' | 'mainland' | 'taiwan' | 'hongkong' | 'japan'; // Regional conventions.
  lineBreak?: 'auto' | 'none' | 'basic' | 'gb' | 'strict'
    | 'ja-very-strict' | 'ja-strict' | 'ja-loose';      // Which marks may not open or close a line.
  punctuationWidth?: 'auto' | 'fullwidth' | 'kaiming' | 'lineEndHalf' | 'halfwidth';
  compressAdjacent?: 'auto' | boolean;      // Two marks that meet take 1.5 em.
  trimLineStart?: 'auto' | boolean;         // Brackets at a line edge lose their outer half.
  hangingPunctuation?: 'auto' | 'none' | 'allow' | 'force';
  spaceAfterQuestion?: 'auto' | boolean;    // One em after ？！ inside a paragraph (Japan).
  paragraphStartBracket?: 'auto' | 'indent' | 'half' | 'flush'; // A bracket opening an indented paragraph.
  wordBreak?: 'normal' | 'keep-all';        // keep-all: break only at spaces (分かち書き, Korean).
  titleMinChars?: number;                   // Characters of a book title on either side of a break; default 2.
  circledNumbers?: 'cjk' | 'western';       // ① ② as Chinese characters (default) or Latin letters.
  composeDesignText?: boolean;              // CJK rules in design text; default true.
  latinSpacing?: Dimension;                 // Between Han and Latin; default 0.25 em.
  uprightDigits?: 0 | 2 | 3 | 4;            // Vertical text: numbers in one upright cell; default 2.
  grid?: { enabled?: boolean; charsPerLine?: number; linesPerPage?: number; show?: boolean };
  emphasis?: 'auto' | 'italic' | 'dots';    // What *…* does to CJK characters.
  emphasisMark?: {                          // The mark *…* and :dots[…] draw when they do not say.
    style?: 'auto' | 'dot' | 'circle' | 'sesame';
    fill?: 'auto' | 'filled' | 'open';
    position?: 'auto' | 'over' | 'under';
  };
  bookTitleMark?: 'auto' | 'brackets' | 'wavy' | 'none'; // What :book[…] prints.
  bookTitleBrackets?: 'auto' | { open: string; close: string }[]; // The brackets, outermost first.
  annotationColor?: ColorValue;             // Dots and name/title lines; default the text colour.
  ruby?: {
    fontFamily?: string; fontSize?: Dimension; color?: ColorValue;
    position?: 'auto' | 'over' | 'under' | 'right';
    overhang?: 'auto' | 'none' | 'kana' | 'any'; // How far a reading may run onto its neighbours.
    align?: 'auto' | 'center' | 'jis' | 'start'; // How a reading shorter than its base is spaced.
    smallKana?: 'keep' | 'full';                 // Small kana in readings as written, or full size.
  };
  warichu?: { fontSize?: Dimension; color?: ColorValue; open?: string; close?: string };
  kunten?: { fontSize?: Dimension; color?: ColorValue; placement?: 'inline' | 'interlinear' }; // Kanbun marks.
}
```

| الخاصية | النوع | القيمة الافتراضية | الوصف |
| --- | --- | --- | --- |
| `region` | `'auto' \| 'mainland' \| 'taiwan' \| 'hongkong' \| 'japan'` | `'auto'` | الأعراف التي يتبعها النص، وفق المناطق التي تصفها وثيقة W3C [Requirements for Chinese Text Layout](https://www.w3.org/TR/clreq/) (clreq). تقرأ `'auto'` المنطقة من `locale`، أو من `bodyText.hyphenation.locale` إن لم يُضبط `locale`: تعطي `zh` و`zh-Hans` و`zh-CN` و`zh-SG` القيمة `'mainland'`؛ وتعطي `zh-Hant` و`zh-TW` القيمة `'taiwan'`؛ وتعطي `zh-HK` و`zh-MO` القيمة `'hongkong'`؛ وتعطي `ja` وكل وسم `ja-*` القيمة `'japan'`، التي تتبع أعرافها وثيقة W3C [Requirements for Japanese Text Layout](https://www.w3.org/TR/jlreq/) (JLReq)؛ وتعطي أي لغة أخرى `'mainland'`. تختار المنطقة القيم الافتراضية لكل حقل `'auto'` أدناه. والقيمة `'japan'` المضبوطة يدويًا تنضّد أي مستند على الطريقة اليابانية؛ لكن العبارات المضمَّنة والقيم الافتراضية للحواشي والفهرس تبقى تابعة للغة. |
| `lineBreak` | `'auto' \| 'none' \| 'basic' \| 'gb' \| 'strict' \| 'ja-very-strict' \| 'ja-strict' \| 'ja-loose'` | `'auto'` | العلامات التي لا يجوز أن تبدأ سطرًا أو تنهيه (clreq §6.1.1 والملحق C.3 من JLReq؛ انظر الجدولين أدناه). `'auto'`: `'gb'` للبر الصيني الرئيسي، و`'basic'` لتايوان وهونغ كونغ، و`'ja-very-strict'` لليابان. ويمكن اختيار كل مستوى في أي مستند. |
| `punctuationWidth` | `'auto' \| 'fullwidth' \| 'kaiming' \| 'lineEndHalf' \| 'halfwidth'` | `'auto'` | عرض العلامات كاملة العرض (انظر [عروض علامات الترقيم](https://postext.dev/ar/docs/configuration-east-asian.md#عروض-علامات-الترقيم)). `'auto'`: `'kaiming'` للبر الرئيسي، و`'fullwidth'` لتايوان وهونغ كونغ واليابان (وفي اليابان مع قواعد JLReq للأزواج ونهايات الأسطر والنقاط الوسطى). |
| `compressAdjacent` | `'auto' \| boolean` | `'auto'` | تتخلّى علامتان متجاورتان (`。」`، `》（`، `：“`) عن نصف em من البياض بينهما، فيأخذ الزوج 1.5 em بدلًا من 2. `'auto'`: مفعّل للبر الرئيسي وهونغ كونغ واليابان، ومعطّل لتايوان. |
| `trimLineStart` | `'auto' \| boolean` | `'auto'` | يتخلّى القوس أو علامة الاقتباس الافتتاحية التي تبدأ سطرًا عن نصف em الذي يسبقها، والختامية التي تنهي سطرًا عن نصف em الذي يليها. `'auto'`: مفعّل للبر الرئيسي وهونغ كونغ واليابان، ومعطّل لتايوان. وفي اليابان تحتفظ العلامة الختامية بنصف em في نهاية السطر حتى يحتاج إليه السطر (انظر [عروض علامات الترقيم](https://postext.dev/ar/docs/configuration-east-asian.md#عروض-علامات-الترقيم)). |
| `hangingPunctuation` | `'auto' \| 'none' \| 'allow' \| 'force'` | `'auto'` | هل يجوز لعلامة وقف أو علامة انتهاء أن تتدلّى خارج نهاية السطر (انظر [علامات الترقيم المتدلّية](https://postext.dev/ar/docs/configuration-east-asian.md#علامات-الترقيم-المتدلّية)). `'auto'`: `'allow'` في اليابان (、。，． وحدها)، و`'none'` في غيرها. حتى postext 1.15 كانت القيمة الافتراضية `'none'`، وهي ما تبقى عليه `'auto'` خارج اليابان. |
| `spaceAfterQuestion` | `'auto' \| boolean` | `'auto'` | بياض بعرض em بعد ？ أو ！ كاملة العرض (وبعد ‼⁇⁈⁉ أيضًا، وبعد علامة حاشية ملتصقة بها) داخل الفقرة، كما تنضّده اليابانية (JLReq §3.1.6): لا يكون قبل قوس ختامي أو علامة أخرى من هذا النوع، ولا في نهاية الفقرة، ويسقط في نهاية السطر. والمسافة U+3000 أو المسافة العادية التي كتبها المؤلف هناك تصير هذا البياض. ولا يتسع ولا يضيق أبدًا. `'auto'`: مفعّل في اليابان، ومعطّل في غيرها. |
| `paragraphStartBracket` | `'auto' \| 'indent' \| 'half' \| 'flush'` | `'auto'` | كيف يُنضَّد القوس الافتتاحي الذي يبدأ فقرة ذات مسافة بادئة في سطرها الأول (JLReq §3.1.5): `'indent'` تُبقي المسافة البادئة وتعطي القوس الـ em الخاص به بعدها (النمط ①)؛ و`'half'` تجعل القوس يتخلّى عن البياض الذي قبل رسمه، فيملأ الرسم عندئذ النصف الثاني من مسافة بادئة بعرض em، ويبدأ النص حيث يبدأ نص الفقرات الأخرى (النمط ③)؛ و`'flush'` تضع القوس عند الحافة دون مسافة بادئة (天付き). والفقرة التي لا مسافة بادئة لها أو ذات المسافة البادئة المعلّقة تُترك كما هي. `'auto'`: `'half'` في اليابان؛ وفي غيرها يُنضَّد القوس كما في أي بداية سطر، كما كان من قبل. |
| `wordBreak` | `'normal' \| 'keep-all'` | `'normal'` | أين ينكسر السطر بين محرفين. `'keep-all'` لا يكسر إلا عند مسافة (U+0020، U+3000) وبجوار علامات الترقيم حيث يسمح `lineBreak` (بعد 、。」 وقبل 「)، ولا يكسر أبدًا بين حرفين (كانا، كانجي، هانغول، لاتيني): للكانا المكتوبة بمسافة بين العبارات (分かち書き) كما في كتب الأطفال المصوّرة وكتب القراءة الأولى، وللكورية. والعبارة الأطول من السطر تنكسر من داخلها كما يكسرها `'normal'`. ويمكن لنمط الفقرة أن يحدّد ما يخصّه (`wordBreak`). منذ postext 1.16. |
| `titleMinChars` | `number` | `2` | أقل عدد من أحرف عنوان الكتاب يتركه كسر السطر على كل جانب منه: داخل `《…》` أو `〈…〉`، مكتوبة أو مضافة بـ `bookTitleMark`، وداخل عنوان `:book[…]` مصفوف بالخط المتموّج أو بلا علامة. مع 2 لا ينتهي سطر بـ `《說` ويبدأ التالي بـ `文》`، ولا يُكسر عنوان من ثلاثة أحرف أو أقل أبدًا؛ وعمومًا لا يُكسر عنوان لا يتجاوز ضعف العدد ناقصًا واحدًا. وتتنحى القاعدة حين لا يجد السطر موضع كسر آخر (العنوان الأطول من السطر يظل يُكسر من داخله حيث يسمح `lineBreak`). مع `1` يُكسر السطر حيث يسمح المستوى. والإعداد المحفوظ قبل postext 1.25 (`configVersion` 10 أو أقدم) في كتاب فيه عنوان يُقرأ بالقيمة `1`. منذ postext 1.25. |
| `circledNumbers` | `'cjk' \| 'western'` | `'cjk'` | كيف تُصفّ في فقرة CJK الأرقام والحروف المحاطة بدائرة أو بين قوسين أو بنقطة: ①–⑳ و⑴–⒇ و⒈–⒛ وⓐ–ⓩ وبقية U+2460–U+24FF، وأرقام الزخارف ❶–❿ و➀–➓. `'cjk'`: كحروف صينية، خانة واحدة بلا مسافة بين الصيني واللاتيني حولها، ولا ينتهي بها سطر لأنها ترقّم النص الذي يليها؛ ويسري ذلك في كل مستويات `lineBreak` التي تُبعد رمز العملة عن نهاية السطر (كلها عدا `none` و`ja-loose`). `'western'`: كحروف لاتينية، بالمسافة بين الصيني واللاتيني على الجانبين، ويجوز أن ينتهي بها السطر. والنص العمودي يصفّها قائمة في الحالتين. والإعداد المحفوظ قبل postext 1.25 في كتاب فيه شيء منها يُقرأ بالقيمة `'western'`. منذ postext 1.25. |
| `composeDesignText` | `boolean` | `true` | هل يُصفّ نص التصميم الصيني أو الياباني (تصاميم العناوين وصفحات الافتتاح، والترويسات الجارية وأرقام الصفحات، وتصاميم الصفحات، وصفحات الأجزاء) بقواعد المتن: قواعد بداية السطر ونهايته في `lineBreak`، وعروض العلامات في `punctuationWidth` و`compressAdjacent`، و`latinSpacing`، و`hangingPunctuation`، و`titleMinChars`. يُصفّ صفّ من النص (الأسطر بين `\n` وآخر) بهذه الطريقة حين تكون أحرف CJK فيه أكثر من المسافات بين الكلمات، كما يحدث للفقرة؛ وتُلفّ الصفوف الأخرى عند المسافات كما كانت. وتبقى فواصل الأسطر الصريحة و`paragraphIndent` والحروف الاستهلالية والعلامات داخل السطر تعمل؛ وتبقى الأسطر غير مضبوطة الطرف (لا يُوزَّع البياض بين المحارف)، وتُطبع القراءات والوارِيتشو وعلامات التوكيد نصًا عاديًا. مع `false` يُلفّ هذا النص عند المسافات وتحتفظ كل علامة بعرضها في الخط. والإعداد المحفوظ قبل postext 1.25 الذي يحوي نصه CJK يُقرأ بالقيمة `false`. منذ postext 1.25. |
| `latinSpacing` | `Dimension` | `{ value: 0.25, unit: 'em' }` | المسافة بين حرف هان وحرف لاتيني أو رقم مجاور له، بوحدة em من حجم نص CJK أو بأي طول؛ والقيمة `0` تلغيها (انظر [المسافة بين الهان واللاتيني](https://postext.dev/ar/docs/configuration-east-asian.md#المسافة-بين-الهان-واللاتيني)). |
| `uprightDigits` | `0 \| 2 \| 3 \| 4` | `2` | في النص العمودي: يقف العدد الذي لا تتجاوز أرقامه هذا العدد في خلية قائمة واحدة (tate-chu-yoko)، إلا إذا ورد في جملة لاتينية، فيتبع كلماتها مُدارًا على جانبه؛ والقيمة `0` تلغي ذلك (انظر [الأرقام في النص العمودي](https://postext.dev/ar/docs/configuration-east-asian.md#الأرقام-في-النص-العمودي)). |
| `grid` | `{ enabled?, charsPerLine?, linesPerPage?, show? }` | معطّلة | منطقة النص محسوبة بعدد الحروف في السطر وعدد الأسطر في الصفحة (انظر [شبكة الحروف](https://postext.dev/ar/docs/configuration-east-asian.md#شبكة-الحروف)). |
| `emphasis` | `'auto' \| 'italic' \| 'dots'` | `'auto'` | ما يفعله التوكيد في Markdown (`*…*`) بالحروف الصينية واليابانية: تضع `'dots'` علامة توكيد بجانب كل حرف، كما تفعل `:dots[…]` (بشكل `emphasisMark` وجانبها)، وتحتفظ الحروف اللاتينية الواقعة في التوكيد نفسه بميلها؛ وتُميل `'italic'` الحروف، وهو ما لا يقدر عليه خط CJK إلا بالتزييف. `'auto'`: `'dots'` حين تكون لغة المستند الصينية أو اليابانية، و`'italic'` في غير ذلك (انظر [العلامات والروبي والواريتشو](https://postext.dev/ar/docs/configuration-east-asian.md#العلامات-والروبي-والواريتشو)). |
| `emphasisMark` | `{ style?, fill?, position? }` | `'auto'` لكلٍّ منها | العلامة التي يرسمها `*…*` و`:dots[…]` الخالية من السمات: `style` بالقيمة `'dot'` أو `'circle'` أو `'sesame'` (﹅)؛ و`fill` بالقيمة `'filled'` أو `'open'` (التلقائي: مفرغة للدائرة)؛ و`position` بالقيمة `'over'` (على يمين النص العمودي) أو `'under'` (على يساره). التلقائي: في اليابان سمسمة مصمتة فوق النص وعلى يمينه في النص العمودي (JLReq §3.3.9)؛ وفي غيرها نقطة تحت النص وعلى يمينه في النص العمودي، كما كان من قبل. وسمات العلامة نفسها تغلب. |
| `bookTitleMark` | `'auto' \| 'brackets' \| 'wavy' \| 'none'` | `'auto'` | ما تطبعه `:book[…]`: أقواس حول العنوان (`bookTitleBrackets`)، أو خط عنوان الكتاب المتموّج تحته، أو العنوان مجرّدًا. `'auto'`: الأقواس للبر الرئيسي واليابان، والخط المتموّج لتايوان وهونغ كونغ. |
| `bookTitleBrackets` | `'auto' \| { open, close }[]` | `'auto'` | أقواس `:book[…]` مع `'brackets'`، من الخارج إلى الداخل؛ والعنوان المتداخل أعمق من طول القائمة يأخذ الزوج الأخير. `'auto'` (أو قائمة فارغة): 『』 ثم 「」 في اليابان، و《》 ثم 〈〉 في غيرها. |
| `annotationColor` | `ColorValue` | لون النص | لون نقاط التوكيد وخطوط أسماء الأعلام وعناوين الكتب؛ وهو القيمة الافتراضية للونَي الروبي والواريتشو. |
| `ruby` | `{ fontFamily?, fontSize?, color?, position?, overhang?, align?, smallKana? }` | نصف الحجم، `'auto'` | قراءات `:ruby[…]` و`{紅樓\|hóng\|lóu}`: الخط (افتراضيًا خط النص)، والحجم (افتراضيًا `{ value: 0.5, unit: 'em' }` من النص؛ والزويين (zhuyin) بنسبة 60 % منه)، واللون، وموضعها حين لا يحدده الروبي (`'auto'`: الزويين على يمين كل حرف، والبينيين (pinyin) والكانا فوق النص في النص الأفقي وعلى يمينه في النص العمودي). و`overhang`: المدى الذي يجوز أن تمتد به القراءة الأطول من أساسها فوق ما يجاورها: `'kana'` حرف روبي واحد فوق الكانا و ー والجانب الأبيض من العلامة، ونصف حرف فوق القوس الافتتاحي، ولا شيء فوق الكانجي (JLReq §3.3.8)؛ و`'any'` نصف حرف روبي فوق أي حرف مجاور لا قراءة له؛ و`'none'` لا شيء؛ والتلقائي `'kana'` في اليابان، وفي غيرها ربع حجم الروبي فوق أي حرف مجاور لا قراءة له، كما كان من قبل. و`align`: كيف تُوزَّع القراءة الأقصر من أساسها: `'jis'` بنسبة 1:2:1 (نصف وحدة عند الطرفين ووحدة بين الحروف)، و`'center'` متلاصقة في الوسط، و`'start'` من بداية الأساس؛ والتلقائي `'jis'` في اليابان و`'center'` في غيرها. و`smallKana: 'full'` تجعل الكانا الصغيرة في القراءات بالحجم الكامل (و`'keep'`، الافتراضي، كما كُتبت). و`mode` و`align` الخاصّان بالروبي نفسه يغلبان. |
| `warichu` | `{ fontSize?, color?, open?, close? }` | نصف الحجم؛ وأقواس （） في اليابان، وبلا أقواس في غيرها | الحواشي ذات الصفّين في `:warichu[…]`: حجم الحاشية (افتراضيًا نصف em، فيملأ الصفّان em السطر)، ولونها، والقوسان المنضّدان بحجم النص قبل صفّها الأول وبعد صفّها الأخير (ويغلب `open` / `close` الخاصّان بالحاشية). وفي اليابان تجعل القيمة الفارغة لـ `open` أو `close` (`''`) الحاشيةَ دون ذلك القوس. |
| `kunten` | `{ fontSize?, color?, placement? }` | نصف الحجم، `'inline'` | علامات الكانبون في `:kunten[…]` (返り点، 送り仮名، 竪点): حجمها (افتراضيًا `{ value: 0.5, unit: 'em' }`، JIS X 4051 §5.5)، ولونها (افتراضيًا `annotationColor`، وإلا فلون النص)، و`placement`: `'inline'` تضع علامات العودة بعد حرفها، فتأخذ نصف em، كما ينضّدها JIS؛ و`'interlinear'` تضع كل علامة في الفجوة بين الأسطر، دون أن تأخذ تقدّمًا. وهي واحدة في كل المناطق (انظر [العلامات والروبي والواريتشو](https://postext.dev/ar/docs/configuration-east-asian.md#العلامات-والروبي-والواريتشو)). |

| المستوى | لا تبدأ السطر أبدًا | لا تنهي السطر أبدًا |
| --- | --- | --- |
| `none` | لا شيء: يجوز كسر السطر بين أي حرفين، كما تفعل الصحف في تايوان وهونغ كونغ. | لا شيء. |
| `basic` | علامات الوقف والانتهاء 、，；：。！？．‼⁇⁈⁉؛ وعلامات الاقتباس الختامية ” ’ 」 』 والأقواس الختامية ）〕］｝】〗》〉؛ وأدوات الوصل – ～ ~ والشرطة المفردة — بين كلمتين؛ والنقاط الوسطى · ‧ ・؛ وعلامات التكرار 々〻ゝゞヽヾ و ー؛ ووحدات الأعداد % ‰ ° ℃ ％ ومربعات الوحدات ㎡ ㎏ ㏄. | علامات الاقتباس الافتتاحية “ ‘ 「 『 والأقواس الافتتاحية （〔［｛【〖《〈؛ ورموز العملات ¥ $ € £. |
| `gb` | `basic`، والشرطة المائلة / ／ (GB/T 15834—2011 §5.1.9). | `basic`، والشرطة المائلة. |
| `strict` | `gb`، والشرطة المزدوجة —— ⸺ وعلامة الحذف …… ⋯⋯. | `gb`. |

تتبع المستويات اليابانية الأعراف الثلاثة في الملحق C.3 من JLReq. وفي كلٍّ منها لا ينتهي سطر بقوس أو علامة اقتباس افتتاحية، ويبقى رمز العملة مع عدده (إلا في `ja-loose`)، ولا قاعدة للشرطة المائلة، ويجوز أن تبدأ —— و―― و…… سطرًا لكنها لا تنقسم أبدًا (ولا 〳〵):

| المستوى | لا تبدأ السطر أبدًا |
| --- | --- |
| `ja-very-strict` | علامات الاقتباس والأقواس الختامية؛ و、，。．؛ والواصلات ‐ – ゠ 〜 ～؛ و？！‼⁇⁈⁉؛ و・：；؛ وعلامات التكرار ゝゞヽヾ〻 و々؛ و ー؛ والكانا الصغيرة ぁぃぅぇぉっゃゅょゎゕゖ ァィゥェォッャュョヮヵヶ ㇰ–ㇿ (وصيغها نصف العرض)؛ والوحدات ％ ℃. وهو الافتراضي في JIS X 4051. |
| `ja-strict` | `ja-very-strict`، ناقصًا الكانا الصغيرة و ー و々 (الكتب العامة في JLReq). |
| `ja-loose` | علامات الاقتباس والأقواس الختامية و、， و。． وحدها (الصحف). |

في كل المستويات:

- —— و…… وحدة واحدة عرضها 2 em لا تنقسم أبدًا؛ ويجوز أن تنفصل وحدتان متتاليتان من هذا النوع عند الحدّ بينهما.
- يبقى العدد مع علاماته ووحدته (¥5,999، 50%، 50％، 120㎡)، حتى عبر مسافة (−3 ℃، 50 %)، وتبقى الكلمة اللاتينية كاملة: يُنضَّد النص الغربي الواقع بين حروف CJK سلسلةً لا يُكسر السطر داخلها أبدًا، إلا إذا كانت السلسلة وحدها أعرض من السطر (فتُقسم حينئذ عند مقطع لفظي بواصلة، أو عند آخر حرف يتسع له السطر؛ وعنوان الويب عند مفاصله). ومربعات الوحدات ㎡ ㎏ ㎞ ㏄ (U+3371–337A، U+3380–33DF، U+33FF) تنتمي إلى سلسلة عددها ولا تجعل الفقرة اللاتينية فقرة CJK.
- العدد أو الكلمة المكتوبة بأرقام وحروف كاملة العرض (１２３４５６، ５０％، ￥５９９، ３．１４، １２：３０، ＡＢＣ) لا تنقسم كذلك أبدًا؛ ومع ذلك يوزّع السطر المضبوط حروفها كما يوزّع حروف الهان.
- لا تكون المسافة بين الكلمات موضع كسر إلا حيث تسمح القواعد: لا يُكسر السطر عندها إذا كان الحرف التالي مما لا يجوز أن يبدأ سطرًا (`参见图表 （ 第三章 ）` لا يبدأ سطرًا أبدًا بـ ）) أو كان الحرف الأخير قبلها مما لا يجوز أن ينهي سطرًا.
- تبقى علامة الحاشية السفلية و`:ref` والنص المرتفع أو المنخفض مع الحرف الذي يسبقها.
- المسافة الأيديوغرافية U+3000 حرف عرضه em واحد: يجوز كسر السطر بعدها، ولا يجوز قبلها أبدًا؛ ولا تُمطّ أبدًا ولا تُحذف أبدًا في بداية السطر. ولإزاحة الحرفين المعتادة في الفقرات الصينية اضبط `bodyText.firstLineIndent: { value: 2, unit: 'em' }` بدلًا من كتابة مسافتين U+3000 (يحذف المحلّل ما تبدأ به الفقرة منها).

حين لا يتسع السطر لحرف ويجوز لهذا الحرف أن يبدأ السطر التالي، ينزل إليه ويوزّع السطر المضبوط ما بقي فيه. وحين لا يجوز له أن يبدأ السطر التالي (فاصلة، أو قوس ختامي، أو الحرف الذي يلي قوسًا افتتاحيًا)، يحاول السطر أولًا أن يستوعبه بالضغط (الدفع إلى الداخل، push-in، clreq §6.2.2.3): إذا كان البياض الذي يجوز له التخلّي عنه — انظر [عروض علامات الترقيم](https://postext.dev/ar/docs/configuration-east-asian.md#عروض-علامات-الترقيم) — يغطي الفائض، دخل الحرف السطرَ (مع العلامات التي يجب أن تبقى معه، كعلامة اقتباس ختامية بعد نقطة) وضُبط السطر على العرض. وإلا تخلّى السطر عن حروف لصالحه (الدفع إلى الخارج، push-out): يرجع موضع الكسر إلى آخر موضع تسمح به القواعد، ويوزّع السطر المضبوط ما بقي. وفي سطر أضيق من عدد مع نقطته، لا يجوز لشيء أن ينهي السطر، فيُكسر قبل النقطة رغم ذلك.

الفقرات التي ينطبق عليها هذا: تلك التي تضم من حروف CJK (الهان، والكانا، والبوبوموفو، والهانغول) أكثر مما تضم من مسافات بين الكلمات، حتى لو لم يتجاور حرفان منها (`第1条、第2条`، `价¥5,999。好`). والمسافة المجاورة لحرف أو علامة CJK ليست مسافة بين كلمات: يُنضَّد `2026 年 9 月 28 日` كما يُنضَّد `2026年9月28日`. وتُنضَّد هذه الفقرات سطرًا سطرًا، في المسار العادي والمسار المنسَّق على السواء، فتنكسر الفقرة التي فيها كلمة غامقة تمامًا كما ينكسر النص نفسه بدونها. أما الفقرة اللاتينية التي تقتبس عنوانًا أو اسمًا صينيًا ففيها مسافات أكثر من الحروف: فتحتفظ بالكسر الأمثل للأسطر، ويجوز كسر السطر بجوار حروف CJK فيها وفق القواعد نفسها. وتُكسر التعليقات وخلايا الجداول والحواشي والإطارات على مستوى المستند أيضًا. ولا يمتد تقسيم الكلمات بالقاموس إلى الكلمات اللاتينية في فقرة CJK.

يوزَّع سطر CJK المضبوط الذي ليس آخر فقرته على العرض، بهذا الترتيب (clreq §6.2.2.4): المسافات بين الكلمات الغربية، حتى نصف em لكل منها؛ ثم المسافات بين الهان واللاتيني، حتى نصف em لكل منها؛ ثم كل فجوة بين الحروف، وتلك المسافات، بالتساوي. لا توضع مسافة داخل كلمة لاتينية أو عدد أو علامة عرضها 2 em، ولا بجوار أداة وصل أو شرطة مائلة. يُضبط التباعد لكل مقطع من السطر (`VDTLineSegment.tracking`، بالبكسل بعد كل حرف، وهو جزء من `width` المقطع)، وترسمه مخرجات Canvas وHTML وPDF تباعدًا بين الحروف؛ والكلمة اللاتينية التي تليها فجوة يُفرد حرفها الأخير في مقطع خاص به. يضم المقطع سلسلة غربية واحدة، أو حروفًا من نمط واحد ورابط واحد وتباعد واحد تتقدّم بالمقدار نفسه، لذا يوزّع Sandbox عرض المقطع عليها بالتساوي حين يضع المؤشر، ولا يغطي الرابط إلا حروفه. وحين يحتاج السطر إلى أكثر من نصف em بين حروفه (أو أكثر من `bodyText.maxJustifyTracking` إن ضُبط)، يُنضَّد بذلك المقدار وينتهي قبل بلوغ العرض: يوسَم السطر بـ `cjkLoose` و`ragged`، ويُبلغ البناء عن تحذير محتوى `cjkLooseLine` مع نص السطر. والسبب المعتاد كلمة لاتينية طويلة أو عنوان ويب لا يمكن أن يصعد إلى السطر السابق. والسطر الخالي من أي حرف CJK (رأس عنوان ويب طويل) يُنضَّد بحافة حرّة دون التحذير، كما يُنضَّد سطر لاتيني من كلمة واحدة. انظر [تقسيم الكلمات بالواصلة وضبط الأسطر](https://postext.dev/ar/docs/justification.md#الصينية-واليابانية-والكورية).

### عروض علامات الترقيم

العلامة الصينية كاملة العرض نصف em من رسم الحرف (glyph) ونصف em من البياض، وما تضبطه الإعدادات هو البياض، لا رسم الحرف أبدًا (clreq §6.3.2). يقع البياض قبل رسم القوس أو علامة الاقتباس الافتتاحية، وبعد رسم الختامية، وبعد رسم علامات الوقف والانتهاء في البر الرئيسي 、，。．；：？！، التي تجلس في زاوية مربعها؛ أما العلامات التي تتوسط مربعها في تايوان وهونغ كونغ (、，。．；：) والنقاط الوسطى فتحتفظ بربع em على كل جانب. وتبقى `？！` بعرض em واحد في النص الأفقي في تايوان وهونغ كونغ، وتبقى `：；？！` كذلك في النص العمودي في كل مكان. والنقطة الوسطى في البر الرئيسي نصف em في كل الأنماط، متوسطة، في اتجاهَي الكتابة كليهما (GB/T 15834، clreq §5.1): يتخلّى الرسم كامل العرض عن بياضه على الجانبين، وفي النص العمودي تكون خليتها نصف em من الأساس.

| النمط | داخل السطر | في نهاية السطر |
| --- | --- | --- |
| `fullwidth` (全角式) | كل علامة em واحد. | em واحد؛ والقوس الختامي نصف em، مع `trimLineStart`. |
| `kaiming` (开明式) | 。．？！ em واحد؛ و，、；：، والأقواس، وعلامات الاقتباس، والنقاط الوسطى نصف em. وهو نمط معظم كتب البر الرئيسي. | كل علامة نصف em. |
| `lineEndHalf` (行末半角) | كل علامة em واحد. | كل علامة نصف em (GB/T 15834—2011 §5.1.10 بقراءة حرفية). |
| `halfwidth` (半角式) | كل علامة نصف em، كما في القواميس. | نصف em. |

في اليابان (`punctuationWidth: 'fullwidth'`، القيمة التلقائية) تتبع العلامات JLReq §3.1 بدلًا من ذلك: تحتفظ 、，。． ببياضها بعد الرسم، و：； و・ بربع em على كل جانب، وتملأ ？！ الـ em الخاص بهما. والعلامة الختامية في نهاية السطر تحتفظ بنصف em، وتتخلّى عنه كله، قبل أي شيء آخر، حين يجب أن يستوعب السطر حرفًا آخر؛ ولا يُقلَّص البياض بعد 。 داخل السطر أبدًا. ويعيد السطر البياض بترتيب JLReq §3.8.3: المسافات بين الكلمات، ثم بياض العلامة التي تختم السطر، ثم النقاط الوسطى، ثم الأقواس و、，، ثم المسافة بين اليابانية واللاتينية؛ ويُوزَّع دون إضافة بياض بعد قوس افتتاحي أو قبل قوس ختامي أو بجوار 、。・：；？！ وU+3000 (§3.1.11). و、 و・ بين عددين بالكانجي تُنضَّدان دون بياض ولا ينكسر السطر عندهما أبدًا (二、三日، 三・一四). وإذا أُعطي مستند ياباني قيمة أخرى لـ `punctuationWidth` (`kaiming` أو `halfwidth`…) اتّبع قواعد clreq الواردة في هذا القسم بدلًا منها.

مع `compressAdjacent`، تتخلّى علامتان متجاورتان عن البياض بينهما (القواعد الثماني في مسودات clreq السابقة): قوس ختامي بعد قوس ختامي آخر أو بعد علامة وقف أو انتهاء من البر الرئيسي (`。」`، لا بعد العلامات المتوسطة في تايوان وهونغ كونغ)، وعلامة وقف أو انتهاء بعد قوس ختامي (`」，`)، وقوس افتتاحي بعد أيٍّ منها أو بعد قوس افتتاحي آخر (`，「`، `》（`، `「『`)، وربع em بين نقطة وسطى وقوس ختامي قبلها أو قوس افتتاحي بعدها. ولا يتجاوز الضغط أبدًا ما يبلغ بالزوج 1.5 em: في نمط Kaiming يأخذ `。”` أصلًا 1.5 em ويحتفظ بها، ويأخذ `》（` em واحدًا. ويضع Kaiming بياض علامة الانتهاء بعد العلامة الختامية التي تليها، مع `compressAdjacent` أو بدونها: يتجاور الرسمان ويأتي نصف em بعد علامة الاقتباس (`。”␣母`، لا `。␣”母`)، ويذهب إلى نهاية السطر كما يذهب بياض علامة الانتهاء. ومع `trimLineStart`، يتخلّى القوس الافتتاحي الذي يبدأ سطرًا عن بياضه السابق، فيصطف حبره مع حافة النص (وفي السطر الأول من الفقرة يقع على بعد نصف em داخل الإزاحة)، ويتخلّى القوس الختامي الذي ينهي سطرًا عن بياضه اللاحق. والعلامة المتوسطة تتخلّى عن ربع em على كل جانب، لا عن نصف em على جانب واحد أبدًا. وحين ينكسر السطر بين علامتين، لا تحتفظ أيٌّ منهما بالضغط: تُنضَّد كل منهما علامةً على حافة سطر (فالعلامة `，` كاملة العرض التي يبدأ `「` التالي لها السطر الجديد تنهي سطرها بعرض em كامل).

يستوعب السطر حرفًا لا يجوز أن يبدأ السطر التالي (الدفع إلى الداخل) حين يغطي البياضُ الذي لا يزال يجوز له التخلّي عنه الفائضَ، وفق ترتيب clreq: المسافات بين الكلمات حتى ربع em، ثم النقاط الوسطى، فالأقواس، فعلامات الوقف، فالمسافات بين الهان واللاتيني حتى ثُمن em، وعلامات الانتهاء أخيرًا، وتتقاسم كل خطوة الضغط بالتساوي. لا يسمح `kaiming` إلا لعلامات الانتهاء بالنزول إلى نصف em، وفي هذه الحالة وحدها: السطر الذي ينقصه حرف واحد فقط يوزَّع، فتحتفظ 。？！ بعرض em داخل السطر. ويسمح `lineEndHalf` لكل علامة بالنزول إلى نصف em؛ ولا تتخلّى علامات `fullwidth` عن شيء (فالكتاب كامل العرض يحافظ على شبكته)، ولا يبقى لعلامات `halfwidth` شيء تتخلّى عنه.

العلامات التي يتشاركها النص اللاتيني مع الصيني (“ ” ‘ ’ … — ·) تأخذ مربع العلامة الصينية في النص الصيني، أيًّا كان تقدّمها (advance) في الخط نفسه: يرسم LXGW WenKai “ ” بعرض 0.35 em، ويرسم Noto Serif SC الشرطة الطويلة بعرض 0.89 em و· بعرض ثلث em. وتُعدّ صينية حين يكون أقرب حرف على أيٍّ من جانبيها (متجاوزًا علامات أخرى من هذا النوع) صينيًا، أو حين لا يجاورها شيء غربي. يقع رسم علامة الاقتباس الافتتاحية في نهاية مربعها ذي em الواحد، والختامية في بدايته؛ وتقع النقطة الوسطى وعلامة الحذف والشرطة المفردة في الوسط؛ ويُنضَّد زوج الحذف (……) كما يضبط الخط الاثنين معًا، متوسطًا في عرضه البالغ 2 em. أما 破折号 (——) فخط واحد متصل: تُمطّ كل شرطة على em الخاص بها انطلاقًا من الحيّز الجانبي للحرف في الخط نفسه، فتتراكب الضربتان عند الوصل، وتُرفع إلى منتصف ارتفاع الحروف (`VDTLineSegment.inkScale`، مقياس يخص الرسم وحده). ثم يضبط النمط المربع كما يضبط مربع أي علامة أخرى. ومع وجود نص غربي على الجانبين (`他说：He said “yes” and left.`) تحتفظ هذه العلامات بتقدّم الخط، والرسم الذي يبلغ عرضه em واحدًا أصلًا لا يتغيّر فيه شيء.

تُبقي المُخرِجات تباعد الترقيم الخاص بالمتصفح بعيدًا عن النص. فـ Chrome يضبط أولى علامتين متجاورتين بنصف عرض حين يقيسهما أو يرسمهما في سلسلة واحدة (`本）》录` بخط Noto Serif SC عرضه 3.5 em بهذه الطريقة)، لذا تُقاس العلامتان المتجاورتان وتُرسمان منفصلتين، وتحمل أسطر HTML في نص CJK الخاصيتين `text-spacing-trim: space-all` و`text-autospace: no-autospace` مع تعطيل الميزات `chws` و`halt` و`vchw`.

في VDT تكون العلامة التي تخلّت عن بياض مقطعًا مستقلًا، `width` فيه هو التقدّم الذي تحتفظ به، مع ضبط `inkOffset` (بالبكسل): ترسم المُخرِجات رسم الحرف عند `x + inkOffset`، فالعلامة التي تخلّت عن البياض الذي قبل رسمها (قوس افتتاحي في بداية سطر) تُرسم قبل مربعها بذلك المقدار (إزاحة سالبة). والعلامة المشتركة المنضّدة في مربع صيني تحمل موضع رسمها في المربع، ناقصًا أي بياض تخلّت عنه قبله، وقد يكون موجبًا. يعرض PDF هذا الرسم بتباعد حروف ينهي تقدّمه حيث ينتهي مربعه، فلا يرى برنامج القراءة أبدًا أنه يتجاوز الحرف التالي، ويضع سطره في نطاق `/ActualText` (انظر [المسافة بين الهان واللاتيني](https://postext.dev/ar/docs/configuration-east-asian.md#المسافة-بين-الهان-واللاتيني)). والمنطقة هي التي تحدّد في أي جانب يقع بياض العلامة، لا الخط: نضّد الكتاب بخط من منطقته (Noto Serif SC للبر الرئيسي، وTC لتايوان، وHK لهونغ كونغ)؛ فالخط التقليدي تحت وسم البر الرئيسي يضغط الجانب الخطأ من علاماته المتوسطة.

### علامات الترقيم المتدلّية

تسمح `hangingPunctuation: 'allow'`، القيمة التلقائية في اليابان، لإحدى العلامات 、，。． (وفي البر الرئيسي، حيث تجلس العلامات في بداية مربعها، أيضًا ；：？！) بأن تتدلّى خارج نهاية السطر حين كانت ستبدأ السطر التالي لولا ذلك ولا يستطيع ضغط السطر استيعابها؛ ولا يحدث ذلك أبدًا في النص الأفقي في تايوان وهونغ كونغ، لأن علاماتها المتوسطة ستبدو مقطوعة (أما في النص العمودي فيجوز). وفي النص العمودي تقع العلامة المتدلّية تحت ذيل السطر. وتُدلّي `'force'` هذه العلامة كلما أنهت سطرًا (عدا السطر الأخير من الفقرة)، وفورًا حين لا يتسع لها السطر. ولا تتدلّى علامة أبدًا حين تلامسها علامة أخرى (`。」`، `，「`). يوسَم المقطع المتدلّي بـ `hangs`؛ ويستبعده `bbox.width` الخاص بالسطر وضبطُه ومحاذاتُه، ويوسّع Canvas وPDF قصّ العمود بعرض أعرض علامة متدلّية (`hangingPunctuationOverhang`)، فلا تُقطع أبدًا. لا تُدلّي معظم الكتب الصينية علامات الترقيم؛ ولا يوصي بها clreq إلا مع شبكة حروف. أما الكتب اليابانية فتُدلّي 、。，． (بوراساغاري)، ولا تُدلّي أبدًا ；：？！ أو الأقواس، في اتجاهَي الكتابة كليهما، ولا تفعل ذلك إلا حين لا يستطيع ضغط السطر استيعاب العلامة.

### المسافة بين الهان واللاتيني

تضع `latinSpacing` (افتراضيًا ربع em) مسافة بين حرف هان (أو كانا) وحرف لاتيني أو رقم أوروبي مجاور له: يُنضَّد `用iPhone拍照` و`1999年` على شكل `用 iPhone 拍照` و`1999 年`. ولا توضع في بداية السطر أو نهايته، ولا بين حرف لاتيني وعلامة صينية (`用iPhone，` لا يضع شيئًا قبل الفاصلة)، ولا داخل الأقواس الصينية (`（iPhone）`)، ولا بجوار رمز ليس حرفًا ولا رقمًا (`为¥5,999`). والمسافة التي كتبها المؤلف عند حدّ كهذا (`用 iPhone 拍照`، كما يرد في كثير من نصوص الويب) تُستبدل بمسافة الهان واللاتيني ولا تُضاف إليها، فتُنضَّد الكتابتان بالطريقة نفسها؛ أما المسافة غير القابلة للكسر والمسافة الأيديوغرافية فتُتركان كما هما. وفي السطر المضبوط تنمو حتى نصف em قبل أن تُوزَّع الحروف؛ وفي السطر الذي يستوعب حرفًا لا يجوز أن يبدأ السطر التالي تتقلّص حتى ثُمن em. ويُحوَّل الطول بأي وحدة غير em وفق dpi الصفحة. والقيمة `0` تلغيها، وتبقى المسافة المكتوبة هناك مسافة بين كلمات.

المسافة مقطع من `kind: 'space'` موسوم بـ `autospace`، و`text` فيه فارغ (أو هو المسافة التي كتبها المؤلف)؛ و`width` فيه نهائي، ولا يمسّه ضبط المسافات الخاص بالمُخرِجات. ولا تظهر أبدًا في النص العادي، فيقرأ البحث والنسخ واللصق ونطاقات المصدر النص كما كُتب. ويضع PDF كل سطر منضَّد على أجزاء (حروف موزَّعة، ومسافات بين الهان واللاتيني، وعلامات تخلّت عن بياض أو متدلّية) في `/Span` قيمة `/ActualText` فيه نص السطر، فيقرأ استخراج النص `用iPhone拍照` لا `用 iPhone 拍 照`، ويقرأ السطر ذا العلامات نصف العرض سطرًا واحدًا.

### الأرقام في النص العمودي

في النص العمودي تُدار الكلمة اللاتينية أو العدد الطويل على جانبه، ويقف العدد القصير قائمًا، أرقامه متجاورة في خلية واحدة عرضها em واحد: tate-chu-yoko (縱中橫، [clreq §2.1.3](https://www.w3.org/TR/clreq/#x2-1-3-mixed-text-composition-in-vertical-writing-mode)، [CSS `text-combine-upright`](https://www.w3.org/TR/css-writing-modes-4/#text-combine-upright)). يحدّد `uprightDigits` عدد الأرقام التي يجوز أن يتألف منها هذا العدد: `2` (الافتراضي)، أو `3`، أو `4`، أو `0` لإلغائه. فـ `2026年9月28日` مع `2` يصبح 2026 على جانبه، و9 قائمًا، و28 قائمًا في خلية واحدة.

- العدد كله أو لا شيء منه: مع `2` يبقى العدد ذو الأرقام الثلاثة على جانبه، ولا ينقسم أبدًا.
- العدد الملاصق لحرف لاتيني (`A4`، `mp3`، `3D`) يبقى في كلمته، على جانبه؛ وكذلك العدد المكتوب بفاصلة عشرية أو بتجميع الأرقام (`3.14`، `10,000`).
- العدد داخل جملة لاتينية يتبع الجملة: حين تقع كلمة لاتينية على جانبيه، يجري على جانبه مع الكلمات (`printed in 49 and 32 copies`، `chapters 49, 32 and (7) of`). وعلى كل جانب يمتد البحث متجاوزًا المسافات، والأعداد الأخرى، وعلامات الحواشي، وعلامات ترقيم السلسلة المُدارة (`, . : ; ( ) ' " - /`)، والشرطتين القصيرة والطويلة، وعلامات الاقتباس المنحنية (`pages 3–5 of`، `the “49” copies`) حتى أول حرف لاتيني أو صيني. والعدد الذي تقود علاماته إلى نص صيني يقف قائمًا (`上午12:30:45开会`، `比分为3:2:1`، `见图(3)所示`، `他住在"12"号楼`)، وكذلك العدد المجاور لحرف أو علامة صينية، بمسافة أو بدونها (`第 3 回`، `用iPhone 15拍攝`، `第3 copies`)، والعدد بجانب رمز يقف قائمًا (`a 30×40 print`)، والعدد في بداية الفقرة أو نهايتها، إذ لا تقع كلمة إلا على جانب واحد منه (`49 copies were printed`، `on page 7.`: اكتب `:sideways[…]` لتديره). وتُقرأ الفقرة كاملة، عبر فواصل الأسطر والتوكيد والروابط.
- بجوار رمز يضعه Unicode قائمًا يأخذ كل عدد خليته الخاصة: `30×40` هو 30، و×، و40، كلها قائمة.
- الخلية التي تضم حروفًا أكثر مما يتسع له em تُضغط عرضيًا إلى em؛ ولا يدخلها التتبّع ولا الضبط أبدًا، بل يأتيان بعدها فقط.
- عند الكسر والضبط تُعدّ الخلية حرفًا صينيًا واحدًا، ولا توضع حولها مسافة بين الهان واللاتيني.
- في اليابان تقف الأزواج `!!` و`!?` و`?!` و`??`، نصف العرض أو كاملة العرض، في خلية قائمة واحدة أيضًا (`すごい！？`)، ما لم يلامسها حرف لاتيني أو رقم أو علامة ثالثة؛ ويُرسم الزوج كامل العرض بالعلامات نصف العرض. وتأخذ الكانا الصغيرة و：； و“ ” (المرسومتان 〝〟) و・ الصيغ العمودية اليابانية (انظر [الإخراج الياباني › الصيغ العمودية](https://postext.dev/ar/docs/japanese-layout.md#الصيغ-العمودية)).
- يجد المُقيِّس وكل المُخرِجات الخلايا نفسها: يرسم Canvas الأرقام مُعادةً إلى الوضع القائم ومضغوطة، ويفعل PDF الشيء نفسه بالخط الأفقي، ويلفّها HTML في `text-combine-upright: all`.

يدويًا، تتجاوز ثلاث علامات سطرية الإعداد في النص العمودي ولا تغيّر شيئًا في النص الأفقي (انظر [صيغة المستند › الاتجاه في النص العمودي](https://postext.dev/ar/docs/document-format.md#الاتجاه-في-النص-العمودي)):

```markdown
第:tcy[120]回、:upright[GDP]與:sideways[12]
```

تضع `:tcy[…]` نصها في خلية قائمة واحدة، وتُقيم `:upright[…]` كل حرف في خلية خاصة به (والحروف اللاتينية في وسطها)، وتدير `:sideways[…]` السلسلة كلها، بما فيها الحروف الصينية. في VDT تكون سلسلة `:tcy` مقطعًا فيه `tcy: true`، بعرض em واحد؛ وتحمل سلسلة `:upright` أو `:sideways` الخاصية `orientation`. أما الأعداد التي يضعها `uprightDigits` في خلية واحدة فلا تحمل وسمًا: تجدها `verticalRuns(graphemes, region, uprightDigits)`. وفي الفقرة، يحمل العدد القصير الذي يجري مع كلمات لاتينية `orientation: 'sideways'`، كأنه مكتوب `:sideways[…]`: فمقطعه لا يضم دائمًا الكلمات التي يجري معها.

### شبكة الحروف

تُحدَّد منطقة النص الصينية بالحروف (clreq §7.1.1): حجم المتن × عدد الحروف في السطر × عدد الأسطر في الصفحة، مضافًا إليها الفراغ بين الأسطر، والفاصل بين العمودين حين يكون هناك عمودان. ويضبطها `grid` بهذه الطريقة:

```ts
cjk: { grid: { enabled: true, charsPerLine: 28, linesPerPage: 28, show: true } }
```

حين يكون `enabled` مفعّلًا، تُعاد كتابة الإعدادات قبل أن يقرأها أي شيء: يصبح عرض كل عمود `charsPerLine` em من `bodyText.fontSize`، وارتفاع منطقة النص `linesPerPage` سطرًا من `bodyText.lineHeight`؛ ومع `layoutType: 'double'` يكون الفاصل بين العمودين هو `layout.gutterWidth` مقرّبًا إلى عدد صحيح من em، لا يقل عن واحد. وتعمل الهوامش في `page.margins` حدودًا دنيا: توضع منطقة النص في منتصف المساحة التي تتركها، ويُزاد كل هامش بنصف المساحة المتبقية على محوره (الكتاب ذو الهوامش المتناظرة يحافظ على الفرق بين هامشيه الداخلي والخارجي، ويُزاد كلاهما بالمقدار نفسه). وإن تُرك `charsPerLine` و`linesPerPage` دون ضبط، أخذا أكبر عدد يتسع. والعدد الأكبر مما يتسع يُخفض إلى ما يتسع ويُبلغ عنه بتحذير إعداد `cjkGridClamped`. ويبقى حجم الخط وارتفاع السطر كما كُتبا. في تخطيط `oneAndHalf` يكون `charsPerLine` للعمود الرئيسي؛ ويأخذ العمود الجانبي عدد em الصحيح الأقرب إلى العرض الذي يعطيه له `sideColumnPercent` داخل الهوامش المضبوطة (لا يقل عن واحد)، ويُقرَّب الفاصل كما في تخطيط العمودين، وتُعاد كتابة `sideColumnPercent` بحيث يُقطع العمودان كلاهما بعدد صحيح من em. وفي النص العمودي (`layout.writingMode: 'vertical-rl'`) تجري حروف السطر نزولًا في الصفحة وتجري الأسطر عرضًا، فيقيس `charsPerLine` ارتفاع الصفحة، ويعطي تخطيط `double` طبقتين مكدّستين من الأعلى إلى الأسفل، وتقف خلايا الشبكة المرسومة فوق النص على المحور الذي تتوسطه الحروف.

تخطيطان من الممارسة الصينية، بحجم 五号 (10.5 pt) مع فراغ بين الأسطر قدره 6 pt (`lineHeight: 16.5pt`):

- 大32开، 140 × 203 mm، 28 × 28: عرض سطر 294 pt (103.7 mm) ومنطقة نص 462 pt (163 mm)؛ و`page.margins` بقيم 16/20 mm للداخلي والخارجي و18/20 mm للأعلى والأسفل تترك لها متسعًا.
- 16开، 184 × 260 mm، عمودان من 23 حرفًا بحجم 小五 (9 pt، وأسطر 13.5 pt) مع فاصل بعرض حرفين: 2 × 207 pt + 18 pt.

يرسم `show` الشبكة (稿纸) فوق منطقة النص، مربعًا رماديًا فاتحًا لكل موضع حرف في كل سطر (مربع em للحرف حول خط أساسه)، في كل عمود من الصفحة (والعمود الجانبي في `oneAndHalf` على الجانب الذي تضعه فيه زوجية الصفحة أو فرديتها)، على Canvas وفي HTML. ولا يرسمها PDF إلا حين يُعطى `renderToPdf` الخيار `characterGrid: true`: فهي أداة مساعدة على الشاشة. تُعيد `cjkGridGeometry(config)` الشبكة التي تضبطها الإعدادات (الأعداد المستخدمة، والهوامش، ومنطقة النص)، وتُعيد `applyCjkGrid(config)` الإعدادات بعد إعادة كتابتها.

### العلامات والروبي والواريتشو

ترميز [العلامات الصينية والروبي والواريتشو](https://postext.dev/ar/docs/document-format.md#العلامات-الصينية-والقراءات-ruby-والتعليقات-السطرية-warichu) يُبقي نصه في الفقرة: فالبحث وجدول المحتويات ومراسي الفهرس الأبجدي والنص المنسوخ تقرأ الحروف كما كُتبت، ولا يتوقف على هذه الإعدادات إلا ما يُرسم حولها.

- **نقاط التوكيد** (着重号، 傍点؛ `:dots[…]`، و`*…*` على حروف CJK مع `emphasis: 'dots'`) تأخذ علامة واحدة لكل حرف، متوسطة عليه (دون احتساب تباعد السطر المضبوط)، ولا توضع أبدًا على علامات الترقيم أو المسافات: تحت الحرف في النص الأفقي، وعلى يمينه في النص العمودي (clreq §5.3.1). يختار `style` نقطة مصمتة أو دائرة مفرغة أو نقطة سمسمية، ويرسم `fill="open"` المحيط وحده، ويحدّد `pos="over|under"` الجانب؛ ويضبط `emphasisMark` ما تتركه العلامة دون ضبط (في اليابان سمسمة فوق النص، وعلى يمينه في النص العمودي). وتقف السمسمة على الورقة بالاتجاه نفسه في وضعَي الكتابة كليهما، والعلامات الواقعة على جانب قراءة روبي توضع خارجها.
- **الخطوط الجانبية** (傍線، `:sideline[…]{style pos}`) تمتد بجانب النص، بما فيه علامات الترقيم والمسافات: `solid` أو `double` أو `wavy` أو `dotted`، تحت النص عبر الصفحة وعلى يمينه نزولًا فيها افتراضيًا؛ والخطان اللذان يلتقيان يتخلّى كلٌّ منهما عن ثُمن em. وتعمل في أي نظام كتابة.
- **خطوط أسماء الأعلام وعناوين الكتب** (专名号 `:name[…]`، و书名号 `:book[…]` مع `bookTitleMark: 'wavy'`) تمتد تحت مربع em للحروف (وعلى يساره في النص العمودي)، عبر المسافات داخل السلسلة. وحيث تلتقي سلسلتان، يتخلّى كل طرف عن ثُمن em، فتُقرأ `:name[賈寶玉]:name[林黛玉]` اسمين. وحين تُعلِّم النقاط والخط النص نفسه على جانب واحد، يكون الخط أقرب إلى النص. ومع `'brackets'` تكون 《》 نصًا تُكسر به الأسطر، يُرسم ويُنسخ كأي حرف آخر؛ ولا تشغل أي حرف من النص العادي أو من خريطة المصدر (توسَم المقاطع بـ `inserted`).
- قراءات **الروبي** تقع في الفراغ بين الأسطر ملاصقة لمربع em للأساس، متوسطة عليه؛ والقراءة التي تضم حرفًا لاتينيًا (بينيين) وتقف فوق أساسها تُرفع بعمق الذيول النازلة في خطها (g, j, p, q, y) و0.04 em من النص زيادة على ذلك، لتتجاوز الأساس، وتحتفظ كل قراءات السطر بخط أساس واحد؛ والقراءة الأعرض من أساسها توسّع مربع الأساس، ناقصًا ربع em الروبي الذي يجوز أن تمتد به على جار بلا قراءة، وتبقى بين قراءتين مسافة ربع em الروبي (وبين قراءتَي زويين ربع em الرموز، فتبقى ثلاثة رموز بجانب كل من حرفين داخل خلاياها). يجوز كسر الروبي الأحادي (قراءة لكل حرف) بين حروفه؛ أما الروبي الجماعي فلا ينكسر أبدًا. وفي اليابان تتبع القراءة `ruby.align` و`ruby.overhang` بدلًا من ذلك: تُوزَّع بنسبة 1:2:1 حين تكون أقصر من أساسها، وتمتد فوق الكانا لا فوق الكانجي حين تكون أطول، ويأتي باقي الحيّز من توزيع الأساس؛ والروبي الأحادي ذو الحرفين أو أكثر روبي جوكوغو، يحتفظ فيه كل حرف بقراءته، التي يجوز أن تمتد فوق الحرف التالي من الكلمة لكنها لا تتداخل أبدًا مع قراءة أخرى، ويبقى السطر قابلًا للكسر بينها (JLReq §3.3). وفي بداية السطر أو نهايته يصطف الأساس والقراءة مع الحافة (clreq §5.5.4). ويقف الزويين في النص الأفقي في عمود على يمين كل حرف، ويكبر مربع الحرف بقدر العمود؛ وفي النص العمودي يمتد العمود نفسه نزولًا على يمين الحروف. وتذهب علامة النبرة إلى يمين العمود ونصف حبرها فوق أعلى الرمز الأخير (clreq §5.5.3.3)، وتُوضع وفق حبرها لأن الخطوط تضع هذه العلامات عالية في مربع em الخاص بها، وتقف في النص العمودي قائمة، شأنها شأن نقطة النبرة المحايدة فوق الرمز الأول.
- حواشي **الواريتشو** (双行夹注) تنطوي في صفّين بحجم الحاشية، متوسطين على السطر بلا فراغ بينهما. يأخذ الصف العلوي حروفًا حتى يضم نصف الجزء على الأقل، فلا يكون الصف الثاني أبدًا هو الأطول، ثم حرفًا آخر ما دام الصف السفلي سيبدأ بعلامة لا يجوز أن تبدأ سطرًا. والحاشية الأطول من المساحة الباقية في السطر تملؤها وتواصل في السطر أو العمود أو الصفحة التالية؛ ولا يوضع قوساها إلا قبل صفّها الأول وبعد صفّها الأخير. وفي النص العمودي يكون الصف العلوي هو الأيمن، ويُقرأ أولًا.
- **علامات الكانبون** (`:kunten[字]{kaeri okuri tate}`) تضع علامات العودة لآخر حرف على جانب ذيل السطر بعده (أسفل اليسار في النص العمودي)، والأوكوريغانا على جانب رأس السطر بدءًا من منتصفه، والطويلة منها تدفع الحرف التالي إلى الأمام، والتاتيسن خطًا قصيرًا إلى الحرف التالي (JIS X 4051 §5). ويقرأ النص المنسوخ و`/ActualText` في PDF الأوكوريغانا بعد حروفها ويتركان علامات العودة؛ والفراغ بين الأسطر الأضيق من أن يتسع لها يُبلَّغ عنه بالتحذير `kuntenExceedsLeading`.

لا تتغيّر خطوة الأسطر أبدًا: تسكن العلامات والقراءات في تباعد الأسطر. والفقرة التي يقل فيها الفراغ بين الأسطر (ارتفاع السطر ناقصًا حجم النص) عن نصف em مع علامات على جانب واحد، أو عن خمسة أثمان em مع علامات على الجانبين (clreq §5.6.1)، يُبلغ عنها بتحذير محتوى `cjkMarksExceedLeading`؛ والفقرة التي تكون قراءاتها أطول من فراغها (وتُحتسب قراءة البينيين مع ارتفاعها) بالتحذير `rubyExceedsLeading`. أعطِ هذه الفقرات نمط فقرة بتباعد أسطر أكبر. والكتب اليابانية ذات الفوريغانا تضبط عادةً ارتفاع سطر المتن على نحو 1.75 em (JLReq §2.4.2).

في VDT يحمل المقطع المُعلَّم `cjkMarks`، ويضع التخطيط النقاط والخطوط على أسطره في `VDTLine.marks` (نقاط، ودوائر، ونقاط سمسمية، وخطوط مستقيمة ومزدوجة ومنقّطة ومتموّجة، في إطار تدفّق السطر)، وترسمها Canvas وHTML وPDF كما هي (PDF: `Artifact /Layout`؛ HTML: صناديق `aria-hidden`، والنص المنقّط في `<em>`). ويحمل مقطع أساس الروبي `ruby` (القراءة وسلاسلها؛ وللقراءة اليابانية أيضًا `id` الذي يتشاركه شرحها مع بقية حروف كلمة الجوكوغو، و`jukugo`) ويرسم أساسه عند `inkOffset`، مع `tracking`، حين توزّعه القراءة؛ ويحمل الحرف ذو علامات الكانبون `kunten` (سلاسلها والتاتيسن)؛ وجزء حاشية الواريتشو في السطر مقطع واحد `text` فيه صفّه العلوي ثم السفلي، و`warichu` فيه الصفّان اللذان ترسمهما المُخرِجات بدلًا منه. ويضع PDF الموسوم القراءة في `RT` ضمن `Ruby` أساسها والحاشية في `Warichu`، ويقرأ `/ActualText` للسطر النص الأساسي والحاشية مرة واحدة. وتُرسم العلامات والقراءات والحواشي في نص المتن والعناوين والقوائم والإطارات، وفي تعليقات الموارد وخلايا جداولها وحواشيها، وتحمل أسطرها `marks` و`ruby` كأسطر المتن؛ أما نص التصميم فيحتفظ بالنص دونها.

دالة الحل (resolver) ودالة التجريد (stripper) على نمط الأقسام الأخرى. ولا تظهر `spaceAfterQuestion` و`paragraphStartBracket` و`wordBreak`، و`overhang` و`align` و`smallKana` في الروبي، في الإعدادات المحلولة إلا حين تغيّر شيئًا (في اليابان، أو حين تُضبط). وتضبط `setCjkLineBreak` و`setCjkComposition` المستوى والتركيب (عروض علامات الترقيم، والتدلّي، ومسافة الهان واللاتيني؛ `cjkCompositionOf(resolved.cjk, dpi)`) للقياسات التي تُجرى خارج `buildDocument`، الذي يضبطهما من الإعدادات. وخارج البناء، تحتفظ العلامات بتقدّمها الكامل ولا توضع مسافة بين الهان واللاتيني:

```ts
import { DEFAULT_CJK_CONFIG, resolveCjkConfig, stripCjkDefaults, cjkRegionOf, setCjkLineBreak, setCjkComposition, cjkCompositionOf } from 'postext';

resolveCjkConfig(undefined, 'zh-HK');
// { region: 'hongkong', lineBreak: 'basic', punctuationWidth: 'fullwidth', compressAdjacent: true,
//   trimLineStart: true, hangingPunctuation: 'none', latinSpacing: { value: 0.25, unit: 'em' }, uprightDigits: 2,
//   grid: { enabled: false, charsPerLine: 0, linesPerPage: 0, show: false },
//   emphasis: 'dots', emphasisMark: { style: 'dot', fill: 'auto', position: 'auto' },
//   bookTitleMark: 'wavy', bookTitleBrackets: [{ open: '《', close: '》' }, { open: '〈', close: '〉' }],
//   ruby: { fontSize: { value: 0.5, unit: 'em' }, position: 'auto' },
//   warichu: { fontSize: { value: 0.5, unit: 'em' }, open: '', close: '' }, kunten: { … } }

resolveCjkConfig(undefined, 'ja');
// { region: 'japan', lineBreak: 'ja-very-strict', punctuationWidth: 'fullwidth', compressAdjacent: true,
//   trimLineStart: true, hangingPunctuation: 'allow', spaceAfterQuestion: true, paragraphStartBracket: 'half', …,
//   emphasisMark: { style: 'sesame', fill: 'auto', position: 'over' }, bookTitleMark: 'brackets',
//   bookTitleBrackets: [{ open: '『', close: '』' }, { open: '「', close: '」' }],
//   ruby: { fontSize: { value: 0.5, unit: 'em' }, position: 'auto', overhang: 'kana', align: 'jis' },
//   warichu: { fontSize: { value: 0.5, unit: 'em' }, open: '（', close: '）' }, kunten: { … } }
```

في Sandbox توجد هذه الإعدادات في **التصميم › نظام الكتابة › تنضيد لغات شرق آسيا**.
