أطقم المحارف(7)

الاسم
charsets - معايير أطقم المحارف والتدويل

الوصف
تقدم صفحة الدليل هذه نظرة عامة على معايير أطقم المحارف المختلفة وكيفية استخدامها في لينكس قبل أن يصبح يونيكود (Unicode) شائعًا. لا تزال بعض هذه المعلومات مفيدة للأشخاص الذين يعملون مع الأنظمة والمستندات القديمة.

تشمل المعايير التي نُوقشت أمثال ASCII و GB 2312 و ISO/IEC8859 و JIS و KOI8-R و KS و Unicode.

التركيز الرئيس ينصب على أطقم المحارف التي استُخدمت بالفعل بواسطة أطقم محارف المناطق المحلية، وليس الآلاف الأخرى التي يمكن العثور عليها في بيانات من أنظمة أخرى.

  ASCII
تُعد ASCII (الشفرة الأمريكية القياسية لتبادل المعلومات) طقم المحارف الأصلي ذو الـ 7 بت، وصُمم في الأصل للغة الإنجليزية الأمريكية. يُعرف أيضًا باسم US-ASCII. يُوصف حاليًا بواسطة معيار ISO/IEC646:1991 IRV (الإصدار المرجعي الدولي).

ظهرت بدائل متنوعة لـ ASCII تستبدل علامة الدولار برموز عملات أخرى وتستبدل علامات الترقيم بأحرف أبجدية غير إنجليزية لتغطية اللغات الألمانية والفرنسية والإسبانية وغيرها في 7 بت. جميعها مهجورة؛ إذ لا تدعم glibc المناطق المحلية التي لا تُعد أطقم محارفها مجموعات فائقة حقيقية لـ ASCII.

بما أن يونيكود، عند استخدام UTF-8، متوافق مع ASCII، فإن نصوص ASCII الصرفة لا تزال تُعرض بشكل صحيح على الأنظمة الحديثة التي تستخدم UTF-8.

  ISO/IEC 8859
ISO/IEC8859 هي سلسلة من 15 طقم محارف بـ 8 بت، تحتوي جميعها على ASCII في نصفها السفلي (7 بت)، ومحارف تحكم غير مرئية في المواضع من 128 إلى 159، و96 رسومًا ثابتة العرض في المواضع 160–255.

ومن بين هذه الأطقم، يُعد ISO/IEC8859-1 ("الأبجدية اللاتينية رقم 1" / Latin-1) هو الأهم. لقد اعتُمد ودُعم على نطاق واسع من قبل أنظمة مختلفة، ويُستبدل تدريجيًا بـ Unicode. تُعد محارف ISO/IEC8859-1 أيضًا أول 256 محرفًا في Unicode.

دعم الطرفية لأطقم محارف ISO/IEC8859 الأخرى متاح في لينكس من خلال أدوات وضع المستخدم (مثل setfont(8)) التي تعدل ارتباطات لوحة المفاتيح وجدول رسوميات EGA وتستخدم جدول خطوط "user mapping" في تعريف الطرفية.

فيما يلي أوصاف موجزة لكل طقم محارف:

ISO/IEC8859-1 (Latin-1)
    يغطي Latin-1 العديد من اللغات الأوروبية مثل الألبانية، والباسكية، والدنماركية، والإنجليزية، والفاروية، والجاليكية، والآيسلندية، والأيرلندية، والإيطالية، والنرويجية، والبرتغالية، والإسبانية، والسويدية. اعتُبر نقص الوصلات الأبجدية الهولندية Ĳ/ĳ، والفرنسية œ، وعلامات الاقتباس „الألمانية“ أمرًا محتملًا.

ISO/IEC 8859-2 (Latin-2)
    يدعم Latin-2 العديد من لغات وسط وشرق أوروبا المكتوبة باللاتينية مثل البوسنية، والكرواتية، والتشيكية، والألمانية، والمجرية، والبولندية، والسلوفاكية، والسلوفينية. اعتُبر استبدال الحروف الرومانية ș/ț بـ ş/ţ أمرًا محتملًا.

ISO/IEC 8859-3 (Latin-3)
    صُمم Latin-3 لتغطية الإسبرانتو والمالطية والتركية، ولكن ISO/IEC8859-9 حل محله لاحقًا للغة التركية.

ISO/IEC 8859-4 (Latin-4)
    قدم Latin-4 أحرفًا للغات شمال أوروبا مثل الإستونية، واللاتفية، والليتوانية، ولكن حلت محله ISO/IEC8859-10 و ISO/IEC 8859-13.

ISO/IEC 8859-5
    أحرف سريانية تدعم البلغارية، والبيلاروسية، والمقدونية، والروسية، والصربية، و(بشكل شبه كامل) الأوكرانية. لم يُستخدم على نطاق واسع أبدًا، انظر مناقشة KOI8-R/KOI8-U أدناه.

ISO/IEC 8859-6
    أُنشئ للغة العربية. جدول صور الحروف (glyph) في ISO/IEC8859-6 هو خط ثابت لأشكال حروف منفصلة، ولكن يجب على محرك العرض المناسب دمج هذه الحروف باستخدام الأشكال الابتدائية والمتوسطة والنهائية الصحيحة.

ISO/IEC 8859-7
    أُنشئ للغة اليونانية الحديثة في عام 1987، وحُدث في عام 2003.

ISO/IEC 8859-8
    يدعم العبرية الحديثة بدون علامات التشكيل (niqud). علامات التشكيل والعبرية التوراتية الكاملة كانت خارج نطاق طقم المحارف هذا.

ISO/IEC 8859-9 (Latin-5)
    هذا البديل من Latin-1 يستبدل الأحرف الآيسلندية بأحرف تركية.

ISO/IEC 8859-10 (Latin-6)
    أضاف Latin-6 أحرف الإنويت (الغرينلاندية) والسامي (اللابية) التي كانت مفقودة في Latin-4 لتغطية منطقة بلدان الشمال الأوروبي بالكامل.

ISO/IEC 8859-11
    يدعم الأبجدية التايلاندية وهو مطابق تقريبًا لمعيار TIS-620.

ISO/IEC 8859-12
    طقم المحارف هذا غير موجود.

ISO/IEC 8859-13 (Latin-7)
    يدعم لغات حافة البلطيق؛ وعلى وجه الخصوص، يتضمن أحرفًا لاتفية غير موجودة في Latin-4.

ISO/IEC 8859-14 (Latin-8)
    هذا هو طقم المحارف الكلتي، ويغطي الأيرلندية القديمة، والمنكسية، والغيلية، والويلزية، والكورنية، والبريتونية.

ISO/IEC 8859-15 (Latin-9)
    يشبه Latin-9 طقم Latin-1 واسع الاستخدام ولكنه يستبدل بعض الرموز الأقل شيوعًا بعلامة اليورو والأحرف الفرنسية والفنلندية التي كانت مفقودة في Latin-1.

ISO/IEC 8859-16 (Latin-10)
    يغطي طقم المحارف هذا العديد من لغات جنوب شرق أوروبا، والأهم من ذلك أنه يدعم اللغة الرومانية بشكل كامل أكثر من Latin-2.

  KOI8-R / KOI8-U
KOI8-R هو طقم محارف غير تابع للمنظمة الدولية للمعايير (ISO) وكان شائعًا في روسيا قبل يونيكود. النصف السفلي هو ASCII؛ والنصف العلوي هو طقم محارف سرياني صُمم بشكل أفضل قليلًا من ISO/IEC8859-5. ويوفر KOI8-U، المستند إلى KOI8-R، دعمًا أفضل للأوكرانية. لا يتوافق أي من هذين الطقمين مع ISO/IEC2022، على عكس سلسلة ISO/IEC8859.

دعم الطرفية لـ KOI8-R متاح في لينكس من خلال أدوات وضع المستخدم التي تعدل ارتباطات لوحة المفاتيح وجدول رسوميات EGA، وتستخدم جدول خطوط "user mapping" في تعريف الطرفية.

  GB 2312
GB 2312 هو طقم محارف قياسي وطني للصين القارية يُستخدم للتعبير عن الصينية المبسطة. تمامًا مثل JIS X 0208، تُعين المحارف في مصفوفة 94x94 من بكتين تُستخدم لبناء EUC-CN. يُعد EUC-CN أهم ترميز للينكس ويتضمن ASCII و GB 2312. لاحظ أن EUC-CN غالبًا ما يسمى GB، أو GB 2312، أو CN-GB.

  Big5
كان Big5 طقم محارف شائعًا في تايوان للتعبير عن الصينية التقليدية. (Big5 هو طقم محارف وترميز في آن واحد.) وهو مجموعة فائقة لـ ASCII. تُعبر المحارف غير التابعة لـ ASCII في بكتين. تُستخدم البكتات من 0xa1–0xfe كبكتات بادئة للمحارف المكونة من بكتين. استخدم Big5 وامتداداته على نطاق واسع في تايوان وهونج كونج. وهو غير متوافق مع ISO/IEC2022.

  JIS X 0208
JIS X 0208 هو طقم محارف قياسي وطني ياباني. على الرغم من وجود أطقم محارف قياسية وطنية يابانية أخرى (مثل JIS X 0201 و JIS X 0212 و JIS X 0213)، إلا أن هذا هو الأهم. تُعين المحارف في مصفوفة 94x94 من بكتين، يقع كل بكت منها في النطاق 0x21–0x7e. لاحظ أن JIS X 0208 هو طقم محارف، وليس ترميزًا. هذا يعني أن JIS X 0208 نفسه لا يُستخدم للتعبير عن البيانات النصية. يُستخدم JIS X 0208 كمكون لبناء ترميزات مثل EUC-JP و Shift_JIS و ISO/IEC2022-JP. يُعد EUC-JP أهم ترميز للينكس ويتضمن ASCII و JIS X 0208. في EUC-JP، تُعبر محارف JIS X 0208 في بكتين، كل منهما هو كود JIS X 0208 مضافًا إليه 0x80.

  KS X 1001
KS X 1001 هو طقم محارف قياسي وطني كوري. تمامًا مثل JIS X 0208، تُعين المحارف في مصفوفة 94x94 من بكتين. يُستخدم KS X 1001 مثل JIS X 0208، كمكون لبناء ترميزات مثل EUC-KR و Johab و ISO/IEC2022-KR. يُعد EUC-KR أهم ترميز للينكس ويتضمن ASCII و KS X 1001. يُعد KS C 5601 اسمًا قديمًا لـ KS X 1001.

  ISO/IEC 2022 و ISO/IEC4873
تصف معايير ISO/IEC2022 و ISO/IEC4873 نموذجًا للتحكم في الخطوط بناءً على ممارسة VT100. هذا النموذج مدعوم (جزئيًا) من قبل نواة لينكس وبواسطة xterm(1). عُرف العديد من ترميزات المحارف المستندة إلى ISO/IEC2022، خاصة للغة اليابانية.

هناك 4 أطقم محارف رسومية، تسمى G0 و G1 و G2 و G3، وأحدها هو طقم المحارف الحالي للأكواد ذات البت العالي صفر (مبدئيًا G0)، وأحدها هو طقم المحارف الحالي للأكواد ذات البت العالي واحد (مبدئيًا G1). يحتوي كل طقم محارف رسومي على 94 أو 96 محرفًا، وهو في الأساس طقم محارف بـ 7 بت. ويستخدم أكوادًا إما 040–0177 (041–0176) أو 0240–0377 (0241–0376). يتميز G0 دائمًا بحجم 94 ويستخدم الأكواد 041–0176.

يُجرى التبديل بين أطقم المحارف باستخدام دوال الإزاحة (shift functions) ^N (SO أو LS1)، و ^O (SI أو LS0)، و ESC n (LS2)، و ESC o (LS3)، و ESC N (SS2)، و ESC O (SS3)، و ESC ~ (LS1R)، و ESC } (LS2R)، و ESC | (LS3R). تجعل الدالة LSn طقم المحارف Gn هو الحالي للأكواد ذات البت العالي صفر. وتجعل الدالة LSnR طقم المحارف Gn هو الحالي للأكواد ذات البت العالي واحد. وتجعل الدالة SSn طقم المحارف Gn (حيث n=2 أو 3) هو الحالي للمحرف التالي فقط (بغض النظر عن قيمة البت العالي الخاص به).

يُعين طقم محارف مكون من 94 محرفًا كطقم محارف Gn بواسطة تسلسل هروب ESC ( xx (لـ G0)، و ESC ) xx (لـ G1)، و ESC * xx (لـ G2)، و ESC + xx (لـ G3)، حيث xx هو رمز أو زوج من الرموز الموجودة في السجل الدولي ISO/IEC2375 لأطقم المحارف المرمزة. على سبيل المثال، يختار ESC ( @ طقم محارف ISO/IEC646 كـ G0، ويختار ESC ( A طقم المحارف القياسي البريطاني (مع علامة الجنيه بدلًا من علامة المربع)، ويختار ESC ( B طقم ASCII (مع علامة الدولار بدلًا من علامة العملة)، ويختار ESC ( M طقم محارف للغات الأفريقية، ويختار ESC ( ! A طقم المحارف الكوبي، وهكذا دواليك.

يُعين طقم محارف مكون من 96 محرفًا كطقم محارف Gn بواسطة تسلسل هروب ESC - xx (لـ G1)، أو ESC . xx (لـ G2) أو ESC / xx (لـ G3). على سبيل المثال، يختار ESC - G الأبجدية العبرية كـ G1.

يُعين طقم محارف متعدد البكتات كطقم محارف Gn بواسطة تسلسل هروب ESC $ xx أو ESC $ ( xx (لـ G0)، و ESC $ ) xx (لـ G1)، و ESC $ * xx (لـ G2)، و ESC $ + xx (لـ G3). على سبيل المثال، يختار ESC $ ( C طقم المحارف الكوري لـ G0. ويحتوي طقم المحارف الياباني المختار بواسطة ESC $ B على إصدار أحدث يُختار بواسطة ESC & @ ESC $ B.

تنص ISO/IEC4873 على استخدام أضيق لأطقم المحارف، حيث يكون G0 ثابتًا (دائمًا ASCII)، بحيث يمكن استدعاء G1 و G2 و G3 فقط للأكواد ذات البت العالي المضبوط. على وجه الخصوص، لم تعد ^N و ^O تُستخدم، ويمكن استخدام ESC ( xx فقط مع xx=B، وتكون ESC ) xx و ESC * xx و ESC + xx مكافئة لـ ESC - xx و ESC . xx و ESC / xx، على التوالي.

  TIS-620
TIS-620 هو طقم محارف قياسي وطني تايلاندي ومجموعة فائقة لـ ASCII. وبنفس الطريقة المتبعة في سلسلة ISO/IEC8859، تُعين المحارف التايلاندية في 0xa1–0xfe.

  يونيكود (Unicode)
يونيكود (ISO/IEC 10646) هو معيار يهدف إلى تمثيل كل محرف في كل لغة بشرية تمثيلاً لا لبس فيه. تسمح بنية يونيكود بـ 20.1 بت لتكويد كل محرف. نظرًا لأن معظم الحواسيب لا تتضمن أعدادًا صحيحة بـ 20.1 بت، فإن يونيكود يُكود عادةً كأعداد صحيحة بـ 32 بت داخليًا وإما كسلسلة من الأعداد الصحيحة بـ 16 بت (UTF-16) (والتي تحتاج إلى عددين صحيحين بـ 16 بت فقط عند تكويد بعض المحارف النادرة) أو كسلسلة من البكتات بـ 8 بت (UTF-8).

يمثل لينكس يونيكود باستخدام تنسيق تحويل يونيكود بـ 8 بت (UTF-8). ويُعد UTF-8 ترميزًا متغير الطول ليونيكود. ويستخدم بكتًا واحدًا لتكويد 7 بتات، وبكتين لـ 11 بتًا، و3 بكتات لـ 16 بتًا، و4 بكتات لـ 21 بتًا، و5 بكتات لـ 26 بتًا، و6 بكتات لـ 31 بتًا.

لنفترض أن 0 و 1 و x تمثل بتًا صفريًا أو واحدًا أو عشوائيًا. البكت 0xxxxxxx يمثل كود يونيكود 00000000 0xxxxxxx الذي يكود نفس الرمز الذي يكوده ASCII 0xxxxxxx. وبالتالي، ينتقل ASCII دون تغيير إلى UTF-8، ولا يلاحظ الأشخاص الذين يستخدمون ASCII فقط أي تغيير: لا في الكود، ولا في حجم الملف.

البكت 110xxxxx هو بداية كود مكون من بكتين، ويُجمع 110xxxxx 10yyyyyy ليصبح 00000xxx xxyyyyyy. والبكت 1110xxxx هو بداية كود مكون من 3 بكتات، ويُجمع 1110xxxx 10yyyyyy 10zzzzzz ليصبح xxxxyyyy yyzzzzzz. (عندما يُستخدم UTF-8 لتكويد ISO/IEC 10646 بـ 31 بت، فإن هذا التقدم يستمر حتى أكواد مكونة من 6 بكتات.)

بالنسبة لمعظم النصوص في أطقم محارف ISO/IEC8859، هذا يعني أن المحارف الخارجة عن نطاق ASCII تُكود الآن ببكتين. يميل هذا إلى توسيع ملفات النصوص العادية بنسبة واحد أو اثنين بالمئة فقط. وبالنسبة للنصوص الروسية أو اليونانية، يوسع هذا ملفات النصوص العادية بنسبة 100%، بما أن النصوص في تلك اللغات تقع في الغالب خارج نطاق ASCII. وبالنسبة للمستخدمين اليابانيين، هذا يعني أن أكواد الـ 16 بت شائعة الاستخدام الآن ستستغرق ثلاثة بكتات. وبينما توجد تحويلات خوارزمية من بعض أطقم المحارف (خاصة ISO/IEC8859-1) إلى يونيكود، فإن التحويل العام يتطلب حمل جداول تحويل، والتي يمكن أن تكون كبيرة جدًا لأكواد الـ 16 بت.

لاحظ أن UTF-8 ذاتي المزامنة: 10xxxxxx هو ذيل، وأي بكت آخر هو رأس للكود. لاحظ أن الطريقة الوحيدة لظهور بكتات ASCII في دفق UTF-8 هي بظهورها كما هي. وعلى وجه الخصوص، لا توجد بكتات NUL ('\0') أو '/' مضمنة تشكل جزءًا من كود أكبر.

بما أن ASCII، وخاصة NUL و '/'، لم يتغيرا، فإن النواة لا تلاحظ استخدام UTF-8. وهي لا تهتم على الإطلاق بما تمثله البكتات التي تتعامل معها.

يُعالج عرض تدفقات بيانات يونيكود عادةً من خلال جداول "subfont" التي تعين مجموعة فرعية من يونيكود إلى صور حروف. داخليًا، تستخدم النواة يونيكود لوصف الخط الفرعي المحمل في ذاكرة الفيديو RAM. وهذا يعني أنه في طرفية لينكس في وضع UTF-8، يمكن للمرء استخدام طقم محارف يضم 512 رمزًا مختلفًا. هذا لا يكفي لليابانية والصينية والكورية، ولكنه يكفي لمعظم الأغراض الأخرى.

انظر أيضًا
iconv(1), ascii(7), iso_8859-1(7), unicode(7), utf-8(7)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.