تغییر فونت فارسی پیشفرض Ubuntu / Mint linux (تبدیل لولو به هلو)
درود، امیدوارم حالتون خوب باشه. چند وقتی نبودم اما برگشتم با یه آموزش خیلی باحال که باهاش میتونید از شر فونت فارسی داغون و ناخوانای لینوکس خلاص بشید و اون رو به یه فونت خوانا مثل وزیر یا یکان تبدیل کنید. در واقع میخوایم لولو رو به هلو تبدیل کنیم :). پس با من همراه باشید با آموزش تبدیل فونت فارسی لینوکس به فونت وزیر یا یکان…
سوال: چرا Gnome-tweak یا Font Selection نه؟!
شاید سوال پیش بیاد که چرا از Gnome-tweak یا Font Selection برای تغییر فونت اوبونتو یا مینت استفاده نکنیم؟ پاسخ روشنه، چون اولا برای من در Linux Mint 21.2 Cinnamon این روش ها جواب نداد و دوما خیلی از نرم افزار ها امکان تنظیم فونت را ندارن و باز از فونت پیشفرض سیستم استفاده میکنن، سوما هدف این بود که یه حرکت ابتکاری بزنم و اطلاعاتم رو بالا ببرم.
من بعد از مطالعه در مورد Fontconfig تونستم بالاخره یک سری اطلاعات مفید بدستم بیارم… در همین حین چند مقاله مفید فارسی هم پیدا کردم که با استفاده از Fontconfig اومده بودن فونت فارسی سیستم رو تغییر داده بودن. من این منابع رو هم برای شما قرار میدم شاید بدردتون بخوره البته به صورت خلاصه و مفید در این مقاله سعی میکنم کار رو راه بندازم اما اگر علاقه به مطالعه دارید میتونید این مقالات رو هم بخونید :).
Fontconfig چیست؟
اگر فقط میخواید فونت رو سریع عوض کنید، نیاز به مطالعه این بخش نیست و میتونید به بخش بعدی برید.
Fontconfig کتابخانه ای برای مدیریت فونت ها در لینوکسه. از جمله کار هایی که میشه با فونت کانفیگ میده عبارتند از:
– انجام جایگزینی نام فونت، به نحوی که در صورت عدم وجود فونتهای مورد نظر، فونتهای جایگزین مناسب انتخاب شوند.
– شناسایی مجموعهای از فونتها که به طور کامل تمام زبانها را پوشش دهند.
– داشتن ابزارهای پیکربندی گرافیکی با استفاده از یک فایل XML
– و … (میتونید به طور کامل اینجا درموردش بخونید: درباره Fontconfig )
شروع فرایند تغییر فونت فارسی پیشفرض Ubuntu / Mint linux (تبدیل لولو به هلو)
خب به اندازه کافی حرف زدم بریم سراغ تبدیل! اول اینکه اوبونتو شما ورژنش ۱۸ یا قدیمی تره شما باید از یه روش دیگه استفاده کنید که در ادامه بهتون میگم، اما برای ورژن های ۱۸ به بعد میتونید از این روش استفاده کنید.
در ابتدای کار فونت مورد نظرتون رو دانلود و نصب کنید، مثلا من اینجا فونت vazir رو نصب کردم. شما هم میتونید از لینک های زیر فونت های وزیر و یکان رو دانلود کنید:
دانلود فونت وزیر
دانلود فونت یکان
بعد از اینکه فونت رو دانلود و نسخه regular فونت مورد نظرتون رو نصب کردید، ترمینال رو باز کنید و دستورات زیر رو خط به خط و به نوبت در ترمینال بزنید:
cd /etc/fonts/ sudo touch local.conf
شما الان یه فایل به اسم local.conf در مسیر /etc/fonts/ ایجاد کردید. حالا باید ویرایشش کنید. برای اینکار دستور زیر رو میزنیم:
sudo nano local.conf
حالا باید براتون فایل باز بشه، اگر فایل باز نشد قاعدتا ینی یه جای کار میلنگه… پس یبار دیگه دستوراتی که زدید رو بررسی کنید. حالا اینجا باید از یکی از روش های زیر جلو برید و کار رو انجام بدید. هر دو روش تست شده هستن و روی مینت برای من کار کردن، پس نگرانی از بابت این مورد نداشته باشید.
۱- تبدیل لولو به هلو (روش کمی غیراصولی)
حالا بسته به این که میخواید فونت سیستمتون وزیر یا یکان باشه یکی از متن های پایین رو copy کنید و درون فایلی که باز کردیم paste کنید:
این تغییر فونت به وزیر:
<?xml version='1.0'?> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <fontconfig> <match target="pattern"> <test name="family" qual="any"> <string>sans-serif</string> </test> <edit mode="assign" binding="same" name="family"> <string>Vazirmatn</string> </edit> </match> </fontconfig>
برای تبدیل فونت به یکان:
<?xml version='1.0'?> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <fontconfig> <match target="pattern"> <test name="family" qual="any"> <string>sans-serif</string> </test> <edit mode="assign" binding="same" name="family"> <string>Yekan</string> </edit> </match> </fontconfig>
بعد از paste کردن کد مورد نظر، کلید Ctrl رو نگه دارید و کلید x رو بزنید و از شما میپرسه میخواید ذخیره کنم شما y رو وارد میکنید و بعد اینتر میزنید تا تغییرات سیو بشه.
حالا دستور زیر رو بزنید:
fc-cache
بعد از زدن دستور بالا، اگر تغییری مشاهده نکردید یکبار Logout کنید یا سیستم رو Restart کنید و تمام.
اگر مشکلی داشتید توی کامنت ها مطرح تا راهنماییتون کنم.
حالا شاید سوال پیش بیاد که این کد XML چیه و چیکار میکنه! باید بگم در واقع ما داریم از کتابخانه Fontconfig کمک میگیریم و میگیم هر جا فونت sans-serif دیدی به وزیر تبدیلش کن. (به زبان خیلی ساده)
من فکر میکنم این روش زیاد اصولی نباشه اما یه روش دیگه هست که به نظرم اصولی تره.
۲- تبدیل لولو به هلو (روش اصولی)
خب اما روش اصولی داستان 🙂 این روش از محمدرضا عبدالله زاده هست که لینک گیت هابش رو پایین توی منابع گذاشتم اگر با این روشش کارتون راه افتاد برید به گیت هابش ستاره بدید.
همون فایل local.conf که باز کرده بودید رو متن پایین رو copy کنید و درون ادیتور فایل paste کنید (باز اینجا اشاره میکنم اگر قصد دارید از فونت Vazir استفاده کنید کد مربوط به وزیر رو بذارید و اگر قصد دارید Yekan استفاده کنید از کد یکان استفاده کنید.
برای تبدیل به فونت وزیر:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <!-- preferred fonts (first match will be used) --> <alias> <family>sans-serif</family> <prefer> <family>Source Sans Pro</family> <family>Source Han Sans</family> <family>Vazirmatn</family> <family>Noto Sans</family> <family>DejaVu Sans</family> <family>JoyPixels</family> </prefer> </alias> <alias> <family>serif</family> <prefer> <family>Source Serif Pro</family> <family>Source Han Serif</family> <family>Noto Serif</family> <family>DejaVu Serif</family> <family>JoyPixels</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Source Code Pro</family> <family>Source Han Mono</family> <family>Noto Sans Mono</family> <family>DejaVu Sans Mono</family> <family>JoyPixels</family> </prefer> </alias> <!-- hinting/antialiasing settings --> <match target="font"> <edit mode="assign" name="antialias"> <bool>true</bool> </edit> <edit mode="assign" name="hinting"> <bool>true</bool> </edit> <edit mode="assign" name="hintstyle"> <const>hintslight</const> </edit> <edit mode="assign" name="lcdfilter"> <const>lcddefault</const> </edit> <edit mode="assign" name="rgba"> <const>rgb</const> </edit> </match> </fontconfig>
برای تبدیل به فونت یکان:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <!-- preferred fonts (first match will be used) --> <alias> <family>sans-serif</family> <prefer> <family>Source Sans Pro</family> <family>Source Han Sans</family> <family>Yekan</family> <family>Noto Sans</family> <family>DejaVu Sans</family> <family>JoyPixels</family> </prefer> </alias> <alias> <family>serif</family> <prefer> <family>Source Serif Pro</family> <family>Source Han Serif</family> <family>Noto Serif</family> <family>DejaVu Serif</family> <family>JoyPixels</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Source Code Pro</family> <family>Source Han Mono</family> <family>Noto Sans Mono</family> <family>DejaVu Sans Mono</family> <family>JoyPixels</family> </prefer> </alias> <!-- hinting/antialiasing settings --> <match target="font"> <edit mode="assign" name="antialias"> <bool>true</bool> </edit> <edit mode="assign" name="hinting"> <bool>true</bool> </edit> <edit mode="assign" name="hintstyle"> <const>hintslight</const> </edit> <edit mode="assign" name="lcdfilter"> <const>lcddefault</const> </edit> <edit mode="assign" name="rgba"> <const>rgb</const> </edit> </match> </fontconfig>
بعد از paste کردن کد مورد نظر، کلید Ctrl رو نگه دارید و کلید x رو بزنید و از شما میپرسه میخواید ذخیره کنم شما y رو وارد میکنید و بعد اینتر میزنید تا تغییرات سیو بشه.
بعد دستور زیر رو در ترمینال بزنید:
fc-cache
حالا Logout یا Restart کنید تا تغییرات اعمال بشه.
روش تبدیل لولو به هلو برای اوبونتو ورژن ۱۸ و قبلتر
برای تغییر فونت فارسی پیشفرض اوبونتو ۱۸ و ورژن های قبلترش از روش زیر استفاده کنید. این روش از آقای علیرضا آهنی هست که لینک نوشته ایشون رو هم در لیست منابع اوردم میتونید مراجعه کنید و از اطلاعات ایشون هم استفاده کنید.
اول از همه ترمینالتون رو باز کنید و دستور زیر رو بزنید:
sudo nano .fonts.conf
حالا متن زیر رو copy کنید و درونش paste کنید:
<?xml version='1.0'?> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <fontconfig> <match target="pattern"> <test name="family" qual="any"> <string>sans-serif</string> </test> <edit mode="assign" binding="same" name="family"> <string>ubvazir</string> </edit> </match> <dir>~/.fonts</dir> </fontconfig>
اگر فونت وزیر رو دوست ندارید یا میخواید از فونت دیگه استفاده کنید به جای عبارت ubvazir اسم فونت خودتون رو جایگزین کنید. حالا کلید Ctrl رو نگه دارید و کلید x رو بزنید و کلید y و بعد اینتر بزنید.
بعد از اون ما باید فایل ttf فونتمون رو به موقعیتی که توی کد بالا هست، قرار بدیم ینی در پوشه ای بنام .fonts که ما هنوز اون رو نساختیم. برای اینکه این پوشه رو بسازیم باید به مسیری Home بریم. پس از دستورات زیر استفاده میکنیم:
cd $HOME mkdir .fonts cd .fonts
عینا و خط به خط دستورات رو دونه دونه و به ترتیب توی ترمینالتون وارد کنید. اگر دستورات رو درست وارد کرده باشید الان باید توی پوشه .fonts باشید.
حالا باید با دستور زیر فونت ubvazir رو توی این پوشه دانلود کنید (اگر شما میخواید از یه فونت دیگه استفاده کنید لینک دانلود فایل ttf فونت مورد نظرتون رو به جای لینک فونت وزیر جایگزین کنید):
wget http://mylaboratory.persiangig.com/other/ubvazir.ttf
و حالا دستور زیر رو وارد کنید تا تغییرات اعمال بشه:
fc-cache
حالا باید از سیستم Logout کنید یا سیستم رو Restart کنید تا کار تموم بشه.
اینم از این… اگر سوالی داشتید یا روش بهتری سراغ داشتید حتما در بخش نظرات مطرح کنید.
با آرزوی ایرانی آباد – Happy Coding
منابع :
گیت هاب
ویرگول
آرچ لینوکس
درباره Fontconfig
اقای عسکری دستت درد نکنه من دستی واسه هر نرم افزار تغییر میدادم عالی بود 💙
خواهش میکنم جناب اصلاح
شاد و پیروز باشید
سلام سارویس
من اوبونتو دارم و میخوام فونتشو تغییر بدم مشکلی براش پیش نمیاد؟ تست شدست؟
سلام سیاوش عزیز؛
نه مشکلی پیش نمیاد و با خیال راحت میتونی استفاده کنی
با آرزوی بهترین ها
دستت درد نکنه
سرت درد نکنه عزیز