الحشو إلى العرض المرئي
حاذِ أعمدة تمزج النص اللاتيني بنص شرق آسيوي: تشغل كلمة 東京 أربعة أعمدة، لذا فحشوها حتى 8 يضيف 4 مسافات فقط لا 6. وتُعدّ المحارف العريضة ومعظم الرموز التعبيرية عمودين، والعلامات المركّبة صفرًا. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- 東京
- العرض
- 8
- الضلع
- Right
- النتيجة
- 東京
- حرف
- الطول الأصلي
- 2
- العرض المرئي الأصلي
- 4
حشو سلسلة حتى تصطف الأعمدة في طرفية مشكلة عرض مرئي لا عدّ أحرف. تشغل إيديوغرامات شرق آسيا ومقاطع الهانغول والحروف اللاتينية كاملة العرض ومعظم الإيموجي عمودين في خط أحادي المسافة، بينما لا تشغل علامات الدمج ومحددات التنويع والواصلات صفرية العرض أي عمود. حشو يعتمد على طول JavaScript يُزيح أي خلية تمزج اللاتينية باليابانية أو الصينية أو الكورية. تقيس هذه الأداة أعمدة العرض بأسلوب East Asian Width ثم تدرج محرف حشو بعرض عمود واحد يسارا أو يمينا أو من الجانبين حتى بلوغ عدد الأعمدة المستهدف.
كيف يُقاس عرض العمود المرئي
في طرفية أحادية المسافة معتادة يشغل كل حرف ورقم وعلامة ترقيم ASCII عمودا واحدا. ينهار هذا التصور فور احتواء السلسلة على محرف عرضه East Asian Width هو Wide أو Fullwidth. إيديوغرامات CJK الموحدة ومقاطع الهانغول والأرقام كاملة العرض (الأشكال الإيديوغرافية من صفر إلى تسعة) والكتلة اللاتينية كاملة العرض يشغل كل منها عمودين.
علامات الدمج من الفئتين Mn أو Me ومحارف التنسيق وحركات الهانغول الوسطى والنهائية ومحددات التنويع والواصلة صفرية العرض تشغل صفرا من الأعمدة وتلتصق بالوحدة الكتابية السابقة. أزواج مؤشرات الإقليم التي تكوّن إيموجي علما تُعامل كتلة واحدة بعرض عمودين، والإيموجي الموصولة بواصلة صفرية العرض تبقى كتلة عرضها اثنان بدل ركام صور مستقلة. المحارف ذات العرض الملتبس مثل الحروف اليونانية وبعض الرموز تتبع عرف POSIX والغربي وتُحسب عمودا واحدا، وهذا يطابق معظم طرفيات Linux وmacOS خارج إعداد شرق آسيوي.
تُرفض محارف التحكم بما فيها الجدولة والسطر الجديد: عرض الجدولة ليس خاصية للسلسلة، وهذه الأداة تحشو خلية واحدة لا جدولا كاملا. تسير الخوارزمية على نقاط ترميز Unicode لا على أزواج UTF-16 البديلة، فإيموجي واحد خارج Basic Multilingual Plane محرف واحد لا اثنان. النتيجة هي نفس عدد الأعمدة الذي تعطيه قياس محافظ بأسلوب wcwidth، وهو بالضبط ما تحتاجونه قبل إضافة محارف الحشو حتى يشترك اسم ياباني وSKU لاتيني في حافة يمنى مستقيمة.
أين يظهر الحشو حسب العرض المرئي في العمل الفعلي
مؤلفو CLI ومنسقو السجلات ومن يطبع جدولا بخط أحادي المسافة يصطدمون بهذه المسألة أول مرة يقع فيها قيمة يابانية أو صينية أو كورية في عمود قيس بطول السلسلة. أرقام الفواتير تجاور أسماء المنتجات؛ اسم CJK بعرض محرفين في JavaScript يشغل أربعة أعمدة طرفية ويدفع عمود السعر يمينا. جداول Markdown ولوحات الحالة في README وطابعات الإيصالات الحرارية لها القيد نفسه متى مزجت الخلية أنظمة كتابة.
أنابيب البيانات التي تُصدر ملفات تصدير ثابتة العرض لأسواق شرق آسيا لا تستطيع استخدام حشو بعدّ الأحرف دون كسر التخطيط الذي يتوقعه محلل المصرف أو الحاسوب المركزي في المصب. يستخدم ضمان جودة التعريب حشو العرض المرئي حَكَما: لخلية تثبيت وميزانية عمود يجب أن تطابق النتيجة المحشوة بايتا ببايت في ودجة المتصفح وفي التكامل المستمر. فضّلوا هذه الصفحة عندما تكون نية البحث الحشو إلى عرض أحادي المسافة أو العرض المرئي أو East Asian Width أو wcwidth أو محاذاة أعمدة CJK في طرفية.
الحشو اليساري أو بالأصفار لمعرّفات ASCII استعلام آخر وينتمي إلى أداة الحشو بعدّ الأحرف؛ هذه الصفحة لمسألة اصطفاف الأعمدة التي لا تظهر إلا حين تدخل المحارف العريضة إلى الخلية.
حالات الاستخدام
محاذاة خلايا CJK في جداول الطرفية
احشوا يمينا خلايا مختلطة من اللاتينية واليابانية أو الصينية أو الكورية إلى عرض مرئي مشترك حتى تبقى أعمدة السعر والحالة مستقيمة في خرج CLI.
حقول تصدير شرق آسيوية ثابتة العرض
احشوا بمسافات أسماء المنتجات والعناوين حتى ميزانية الأعمدة التي يتوقعها ملف تراثي ثابت العرض، عادّين المحارف كاملة العرض عمودين.
توسيط لافتات مختلطة الكتابة
احشوا جانبي عنوان قصير يحتوي CJK أو إيموجي حتى يتوسط سطر إيصال أو ترويسة سجل أحادي المسافة بصريا.
الأسئلة الشائعة
بماذا يختلف هذا عن الحشو العادي للسلاسل؟
الحشو العادي يعدّ أحرف JavaScript. هذه الأداة تعدّ أعمدة مرئية أحادية المسافة، فعرض 東京 هو 4 لا 2، وتبقى الأعمدة مصطفة عندما تشترك اللاتينية وCJK في صف.
هل يجوز الحشو بمسافة كاملة العرض أو بإيموجي؟
لا. يجب أن يشغل محرف الحشو عمودا مرئيا واحدا بالضبط. استخدموا مسافة ASCII أو 0 أو واصلة أو رسما ضيقا آخر.
كيف تُعدّ الإيموجي والأعلام؟
تشغل معظم الإيموجي عمودين. زوج مؤشرات الإقليم (علم) كتلة واحدة بعرض عمودين. تبقى متواليات الواصلة صفرية العرض كتلة واحدة بدل تكديس العروض.
ماذا يحدث إذا كان نصي أعرض من الهدف أصلًا؟
لا يُقص أي شيء. تتوقف الأداة وتنبهك بدل اختصار بياناتك بصمت، فتستطيع اختيار عمود أعرض. وإذا تساوى العرضان يعود النص دون أي حشو.
هل يمكن أن يحتوي النص على علامات جدولة أو فواصل أسطر؟
لا. تُرفض محارف التحكم مثل علامة الجدولة وفاصل الأسطر، لأن عرض علامة الجدولة يحدده برنامج الطرفية لا النص نفسه. والأداة تحشو خلية واحدة فقط، لا جدولًا كاملًا.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/pad-visual-width \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"東京","width":8,"side":"right"}'const res = await fetch("https://api.kit.forhosting.com/str/pad-visual-width", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "東京",
"width": 8,
"side": "right"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/pad-visual-width",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "東京",
"width": 8,
"side": "right"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/pad-visual-width", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"東京","width":8,"side":"right"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"東京","width":8,"side":"right"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/pad-visual-width", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "東京",
"width": 8,
"side": "right"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.pad_visual_width",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars | 65536 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تشترك أداة المتصفح المجانية وواجهة API في دالة حتمية واحدة بلا شبكة ولا ساعة ولا عشوائية. إذا كان النص أوسع من الهدف أصلا يفشل الطلب بخطأ invalid_input بدل اقتطاع بياناتكم في صمت.
ما الذي ترسله وما الذي تستلمه
النص الفارغ مسموح وينتج سلسلة حشو خالص بالعرض المطلوب. يجب أن يكون side أحد left أو right أو both، بأسماء بديلة start أو l وend أو r وcenter أو c. الحقل الاختياري char نقطة ترميز واحدة عرضها المرئي عمود واحد بالضبط وافتراضه مسافة ASCII؛ تُرفض مسافة كاملة العرض أو إيموجي حشو لأن حشوا بعرض عمودين لا يصيب ميزانية متبقية فردية. تُحوَّل الأعداد والقيم المنطقية في text إلى سلاسل عشرية أو true/false؛ تُرفض الكائنات والمصفوفات. فحص كلاسيكي: اسم المدينة اليابانية ذو المحرفين 東京 عرضه المرئي أربعة، فحشوه يمينا إلى width ثمانية بمسافات يعطي 東京 ثم أربع مسافات؛ حشو ASCII لاثنين وأربعين يسارا إلى width ستة بالصفر ما يزال يعطي 000042، مطابقا للحشو العادي لمدخل لاتيني فقط. أرسلوا الحقول الإلزامية text وwidth وside مع الحقل الاختياري char. الحقل text هو الخلية المراد حشوها؛ تُقبل الأسماء البديلة input وvalue وdata وs وmessage وstring وcontent وbody. الحقل width هو عدد الأعمدة المرئية المستهدف، عدد صحيح غير سالب؛ تعمل الأسماء البديلة target وcolumns وsize وn عند إغفال width. نص أطول من سقف الأحرف الموثق أو width فوق الحد الأقصى الموثق يفشل بخطأ invalid_input. عند النجاح تعيد الاستجابة text وwidth وside وchar إضافة إلى result للسلسلة المحشوة وoriginal_length وlength بوصفهما طولي سلسلة JavaScript وoriginal_visual_width وvisual_width بعدّ الأعمدة وpad_count وpad_left وpad_right وoperation بقيمة pad_visual_width. تسعير نداءات API الناجحة هو الأساس المنشور $0.002 لكل عنصر؛ إخفاقات التحقق بما فيها هدف دون العرض المرئي الحالي لا تُحاسب.
أين يظهر الحشو حسب العرض المرئي في العمل الفعلي
ولأن هذه القدرة محرك parse خالص فإن كل نداء ناجح يكلف السعر الأساسي المنشور $0.002 بلا رموز نموذج وبلا شبكة صادرة، والتحقق الفاشل لا يستهلك رصيدا.
أسئلة تقنية
ماذا يحدث إذا كان النص أوسع من الهدف أصلا؟
يفشل الطلب بخطأ invalid_input. هذه الأداة لا تقتطع أبدا؛ يجب أن يكون العرض المستهدف أكبر من العرض المرئي المقاس أو مساويا له.
كم يكلف الحشو حسب العرض المرئي؟
أداة المتصفح مجانية وتعمل محليا. تستخدم طلبات API رصيد KIT المدفوع مسبقا بقيمة $0.002 لكل عنصر ناجح؛ لا تُحاسب المدخلات غير الصالحة.