10

حل مشكلة خط اللغة العربية في نظام لينكس وتغيير خط DejaVu الى خط Noto Sans Arabic و Noto Sans Arabic UI

  • xlmnxp

لقد طرحت سابقًا موضوع للإستفسار عن كيفية تغيير خط DejaVu للغة العربية الى اي خط أخر بسبب ان الخط قديم جدًا وسيئ وغير جميل

ولكن لم اجد اي تفاعل مع الموضوع للأسف

ولقد بحث قبل مدة عن طريقة ممكنة من فعل ذلك وجددت ملفات conf لعمل اعادة توجيه من خط معين لخط أخر

وجدت موضوع يتحدث عن ذلك في منتدى adslgate باللغة العربية

لكن المشكلة في حل صاحب الموضوع ان التغيير لا يتطبق على كامل النظام والتطبيقات ويقتصر فقط على اشياء بسيطة جدًا مثل قائمة البدء وبعض تطبيقات GTK ولم يعمل الحل في متصفحات WebKit وتطبيق Telegram وبعض الازرار في المتصفح وبعض التطبيقات ايضًا لم ينجح معها الحل فقمت بتعديل الملف حتى وصلت الى نتيجة ان الحل يعمل في جميع المتصفحات والتطبيقات.

لحل المشكلة قم بانشاء ملف جديد في مجلد

/etc/fonts/conf.d/

يحمل الأسم

99-arabic.conf

ويحتوي على التالي

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>

<!-- Default font (no fc-match pattern) -->
<match>
  <edit mode="prepend" name="family">
  <string>Noto Sans</string>
  </edit>
</match>

<!-- Default font for the ar_SA locale (no fc-match pattern) -->
<match>
  <test compare="contains" name="lang">
  <string>ar</string>
  </test>
  <edit mode="prepend" name="family">
  <string>Noto Sans Arabic UI</string>
  </edit>
</match>

<!-- Default sans-serif font -->
<match target="pattern">
  <test qual="any" name="family"><string>sans-serif</string></test>
  <!--<test qual="any" name="lang"><string>ar</string></test>-->
  <edit name="family" mode="prepend" binding="same"><string>Noto Sans</string></edit>
</match>

<!-- Default serif fonts -->
<match target="pattern">
  <test qual="any" name="family"><string>serif</string></test>
  <edit name="family" mode="prepend" binding="same"><string>Noto Serif</string></edit>
  <edit name="family" mode="append" binding="same"><string>Noto Sans Arabic</string></edit>
  <edit name="family" mode="append" binding="same"><string>Noto Sans Arabic UI</string></edit>
</match>

<!-- Default monospace fonts -->
<match target="pattern">
  <test qual="any" name="family"><string>monospace</string></test>
  <edit name="family" mode="prepend" binding="same"><string>Noto Sans Arabic</string></edit>
  <edit name="family" mode="append" binding="same"><string>Noto Sans Arabic UI</string></edit>
</match>

<!-- Default DejaVu Serif fonts -->
<match target="pattern">
  <test qual="any" name="family"><string>DejaVu Serif</string></test>
  <edit name="family" mode="assign" binding="strong"><string>Noto Sans Arabic</string></edit>
  <edit name="family" mode="assign" binding="strong"><string>Noto Sans Arabic UI</string></edit>
</match>

  <!-- Default DejaVu Sans fonts -->
<match target="pattern">
  <test qual="any" name="family"><string>DejaVu Sans</string></test>
  <edit name="family" mode="assign" binding="strong"><string>Noto Sans Arabic</string></edit>
  <edit name="family" mode="assign" binding="strong"><string>Noto Sans Arabic UI</string></edit>
</match>

<!-- Fallback fonts preference order -->
<alias>
  <family>sans-serif</family>
  <prefer>
  <family>Noto Sans</family>
  <family>Open Sans</family>
  <family>Droid Sans</family>
  <family>Ubuntu</family>
  <family>Roboto</family>
  <family>NotoSansCJK</family>
  <family>Noto Arabic</family>
  <family>Noto Sans Arabic UI</family>
  </prefer>
</alias>
<alias>
  <family>serif</family>
  <prefer>
  <family>Noto Serif</family>
  <family>Droid Serif</family>
  <family>Roboto Slab</family>
  <family>Noto Sans Arabic</family>
  </prefer>
</alias>
<alias>
  <family>monospace</family>
  <prefer>
  <family>Inconsolatazi4</family>
  <family>Ubuntu Mono</family>
  <family>Droid Sans Mono</family>
  <family>Roboto Mono</family>
  <family>Noto Sans Arabic</family>
  </prefer>
</alias>
<alias>
  <family>DejaVu Serif</family>
  <prefer>
  <family>Inconsolatazi4</family>
  <family>Ubuntu Mono</family>
  <family>Droid Sans Mono</family>
  <family>Roboto Mono</family>
  <family>Noto Sans Arabic</family>
  </prefer>
</alias>
<alias>
  <family>DejaVu Sans</family>
  <prefer>
  <family>Inconsolatazi4</family>
  <family>Ubuntu Mono</family>
  <family>Droid Sans Mono</family>
  <family>Roboto Mono</family>
  <family>Noto Sans Arabic</family>
  </prefer>
</alias>

<dir>~/.fonts</dir>
</fontconfig>

ثم احفظ الملف واعد تشغيل النظام وتهانينا الان تم حل مشكلة اللغة العربية في توزيعتك دون تغيير خط النظام الإفتراضي.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

شكراً طبقت الحل واختلف الخط

لكن أتعرف حل لمشكلة ظهور حرف "ﻻ" منفصلاً عما قبله في لينكس

غالبًا المشكلة من الخط الذي تستخدمه

لم تواجهني المشكلة

بخصوص ذلك

برأيك ما هو أفضل خط إنجليزي في واجهات جنو؟

فأنا للأسف لا أستخدم العربية

كاتحربة فالخط الافتراضي في اغلب التوزيعات هو Noto Sans وهو جميل وانيق وعصري

شكرا لك ولكن لدي سؤال علي الهامش

كيف تتحكم في حراره الالوان علي لينكس

الالوان حاره جدا في ububtu

البرتقالي يقترب ان يكون احمر

وال الازرق تحول لبنفسجي

لا اعلم كيفية إصلاح الألوان في بعض التوزيعات وواجعة سطوح المكتب

لكن بإمكانة عن طريق redshift تغيير حرارة الألوان

إذا كنت تستخدم الغنوم فعليك بالذهاب للإعدادات ثم تعديل صيغ الالوان للشاشة

"كود XML طويل عريض"

ويقولون لك لينكس جاهز للاستخدام اليومي...

بإمكانك اختصاره بأمر واحد من 3 كلمات

-1

المستخدم النهائي ليس متفرغاً لقراءة موضوع كهذا، دعك من نسخ ولصق نصوص من الإنترنت لا يعلم موثوقيتها وما إن كانت آمنة أم لا.

لا تخف نحن مجتمع حر ومنفتح لذلك لا حاجة لخوفك وقلقك وسالم صديقنا العزيز

نخدمه وهو كذلك يفعل لنا

بالضبط. الكثير من الأشياء تنقص لينكس لحد الآن. آخر مرة جربت على لينكس على لابتوب احتجت برنامج لضبط touchpad و تفعيل خياراته و لم أجد. الطرق غير الرسومية لضبط الخيارات مضيعة وقت و جهد.

لا تستخدمه ببساطه

أنا لا أستخدمه إلا من خلال آلة افتراضية. تثبيته على لابتوب كان من أجل التجربة.

بديهيّ مواجهتك هذه المشاكل؛ يلزمك تثبيته نظامًا أساسًا.

أحد الطرق التي جربتها لتغيير خط النظام قبل سنين هو فتح الخط الإفتراضي للويندوز في أحدى برامج تصميم الخطوط ( مثل fontcreator ) ثم اغير شكل كل حرف بالخط الجديد ثم احفظه فتصبح عندي نسخة بأشكال جديدة ولكن بنفس المعلومات الخاصة بالخط الإفتراضي ثم اعيد تنصيبه ويعمل.

لا ادري إن كان الأمر ينفع في لينكس.

هذه الطريقة كنت استخدمها سابقًا باستخدام برنامج FontForge لكن للأسف هي غير مجدية فيه تقوم بتغيير الخط الافتراضي للنوافذ وبعض التطبيق

ولا تقوم بتغيير خط DejaVu في اغلب التطبيقات مثل التطبيقات التي تعتمد على Webkit ( مثل تطبيقات Electron و Chrome/Chromium ومتصفح Falkon) وتطبيقات Qt مثل تطبيق Telegram

جميل. أنا أواجه مشكلة مع الخطوط في بيئة kde. الخط الافتراضي قبيح جداً كما في الصورة:

هل عندك فكرة عن اسم هذا الخط وهل يمكنني تغييره باستخدام طريقتك؟

كلمة إخطارات لا تستخدم اي خط

اما كلمة "لا إخطارات أو مهامّ" تستخدم خط DejaVu الذي هو تقريبًا مستخدم في اغلب توزيعات لينكس

والحل في الموضوع هذا هو لتغيير هذا الخط بخط DejaVu وتغيير بعض الخطوط الإفتراضية في النظام لدعم اللغة العربية

هل بالإمكان وضع خط لكلمة "إخطارات"؟ أي إجبار النظام على استخدام خط معين افتراضياً؟

نعم بالإمكان ذلك

بخصوص الطريقة هل يجب تنزيل الخطوط التي سنستخدمها ووضعها في فلودر معين ولا هي اصلا موجوده في النظام؟

انا جربت الطريقة ولكنها لم تنفع معي اظن اني طبقتها غلط

ارجو المساعدة

غالبا خط noto sans arabic يكون مثبت بشكل تلقائي ولن تحتاج الى تثبيته

عليك اعادة تشغير البرامج/النظام لتتطبق التعديلات

كيف أضيف الملف في توزيعة Deepin linux لأنه يرفض الإنتقال إلى المسار المطلوب

الافضل اضافة الملف التالي الى ذلك المسار

ان لم يكن المسار موجود فبإمكانك توليدة عن طريق mkdir

/etc/fonts/conf.d/

ثم اضف الملف التالي له تحت اسم

/etc/fonts/conf.d/69-language-selector-ar.conf 

ومحتواه

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test qual="any" name="family">
        <string>sans-serif</string>
    </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Sans</string>
            <string>Noto Naskh Arabic UI</string>
        </edit>
    </match>
    <match target="pattern">
        <test qual="any" name="family">
            <string>serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Serif</string>
            <string>Noto Naskh Arabic UI</string>
        </edit>
    </match>
    <match target="pattern">
        <test qual="any" name="family">
            <string>monospace</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Sans Mono</string>
            <string>Noto Naskh Arabic UI</string>
        </edit>
    </match>
</fontconfig>

شكرا لك لقد حللت المشكلة عن طريق إضافة ملف arial.ttf إلى مجلد fonts.