
طباعة حرف oneicode. شاهد كل الحروف الحربية الممكنة في المحطة الخاصة بك
¹ حسنا ... ليس تماما كل شخصية. لا نريد أن تتم طباعة رموز التحكم ، لذلك لن تتم طباعة الأحرف في الفئات C و M و Z (انظر جدول قيم الفئة العامة في نهاية البرنامج النصي.)
إذا لم يكن لديك /usr/share/unicode/UnicodeData.txt على نظامك ، فسيتم استخدام نسخة مخزنة مؤقتًا في هذا البرنامج النصي تلقائيًا. (v14.0.0 ، الحالي اعتبارًا من سبتمبر 2021 من unicode.org).
على الرغم من أن Fonttable يرسل جميع أحرف Unicode القابلة للطباعة إلى stdout ، فإن الأحرف التي يتم عرضها فعليًا تعتمد على الخطوط التي قمت بتثبيتها على نظامك وإذا تم إعداد محطةك لاستخدامها.
اختياريا ، يمكن للمرء تحديد خط معين باستخدام -f fontname لتقييد الشاشة على الرسوم المتحركة المحددة في هذا الخط. (يتطلب رسومات FontConfig و Sixel.)
ملاحظة: لا يسرد ملف "Unicodedata.txt" الخاص بـ Unicode Consortium أحرف CJK ، ولكن يمكن العثور عليها في قاعدة بيانات Unihan المجاورة. إذا كنت ترغب في رؤيتها أيضًا ، فحدد "-S"
إنه نص قذيفة. فقط قم بتنزيل fonttable وتشغيله.
كان هذا مستوحى من 8 بت واحد من شباب العديد من الشباب:

FORT=0TO255:?CHR$(T);:NEXT:RUN
هذا هو المكافئ الحديث ، وسيلة لرؤية كل رمز صالح. بالطبع ، لا يمكننا استخدام حلقة بسيطة لأن Unicode لديها مساحة عنوان ضخمة وفقط جزء صغير من نقاط التعليمات البرمجية هي أحرف صالحة. يتمثل الحل في طباعة الأحرف المحددة فقط في ملف UnicodEdata.txt.
وبالمثل ، ليست كل نقطة رمز CJK في نطاق IDeograph الموحد المخصص هي شخصية. يطبع fonttable الأحرف فقط التي تعرفها قاعدة بيانات UNIHAN. (unihan_dictionaryIndices.txt).
اعتبارًا من Unicode 14 (2021) ، أحسب ما يقرب من 32000 حرفًا قابلة للطباعة في Unicodedata.txt. بالإضافة إلى ذلك ، هناك أكثر من 70،000 حرف معروفة CJK في قاعدة بيانات UNIHAN.
$ ./fonttable -s | awk '{print length($1)}'
31959
70805
(يدعي بعض الأشخاص أرقامًا أعلى بكثير لأنهم يستخدمون proplist.txt وحساب المناطق المخصصة ، سواء كانت الأحرف موجودة في نقاط الرمز هذه أم لا.)
fonttable: Show every Unicode character in your terminal.
Usage: fonttable [ -csu ] [ START..END ] [ -f FONT [ -p POINTSIZE ]]
START..END
Show range from START to END, inclusive. (Hexadecimal).
START defaults to 0, END defaults to infinity.
Multiple ranges are allowed: fonttable 2590..f 1fb00..ff
-f FONT | --font-name FONT
Display every Unicode glyph which is defined in FONT as
a sixel image directly in the terminal.
-p POINTSIZE | --point-size POINTSIZE
Change the size of the font rendered by -f.
-d FONT | --defined-in FONT
Like -f, but displays using the default terminal font,
not graphics. Useful to quickly see character coverage.
-c | --cache
Use cached UnicodeData.txt embedded in this script.
Usually the cached version is only used if the file is
not in /usr/share/unicode/ or the current directory.
-s | --show-unihan
Also show CJK data from the Unihan database.
The default is to not show characters that Unicode has
designated as mappings to other standards.
-u | --unihan-cache
Use a cached copy of the list of valid CJK characters
instead of looking for Unihan_DictionaryIndices.txt.
UnicodeData.txt contains around 30,000 characters.
Unihan adds another 70,000.
يشبه خيار -f / - -Font -Name خيار النطاق ، لكنه يظهر فقط نقاط الترميز التي يتم تعريفها بخط معين (ويتم تمييزها كحرف طبيعية قابلة للطباعة في Unicode). على سبيل المثال:
fonttable -f NotoSans
يمكن تحديد الخطوط عن طريق اسم الملف:
fonttable -f /usr/share/fonts/X11/misc/neep-iso10646-1-10x20.pcf.gz
يستخدم Fonttable رسومات Sixel لرسم الخط المطلوب. استخدم خيار -d FONT إذا كنت ترغب في استخدام خط معين للحد من النقاط الكود التي يتم عرضها ، ولكن لا تزال تظهرها في الخط الافتراضي.
علة: حاليا معالجة الستة ساذجة للغاية. لا يتم الاستعلام عن الجهاز إذا كان يدعم رسومات Sixels ، ولا عدد البكسلات المرتفعة لكل حرف ، ولا ألوان النص المناسبة.
يجب أن يكون لجهازك fontconfig ، وهو ما سيكون صحيحًا بالنسبة لـ Debian GNU/Linux ومشتقات ، ولكن قد لا يكون صحيحًا عالميًا. بالإضافة إلى ذلك ، يجب أن يكون fontname بتنسيق fontconfig. على سبيل المثال:
fonttable -f LTCCaslon # Works
fonttable -f "LTC Caslon" # Works
fonttable -f "LTC Caslon Swash Long Regular" # Works
ولكن ، كما يحدث:
fonttable -f Caslon # Does Not Work
fonttable -f "LTC Caslon Swash Long" # Does Not Work
إذا كنت غير متأكد من الاسم ، فحاول fc-list | grep -i caslon . يمكنك أيضًا تحديد اسم ملف الخط مباشرة. على سبيل المثال:
fonttable ~/.local/share/fonts/P22CezannePro.ttf
تحدد بعض الخطوط الزخرفية والخبراء الحروف الرسومية التي لا تحتوي على تعيينات لوحد النقاط الكود أو تلك الخريطة للاستخدام الخاص. لن يتم العثور على هذه الأحرف بواسطة هذا البرنامج النصي. على سبيل المثال:
fonttable -f AdobeWoodType # Shows no glyphs!
ومع ذلك ، مع بعض الجهد ، يمكن للمرء أن يحرك مثل هذه الحروف الرسومية إلى نقاط رمز Unicode باستخدام برنامج مثل Fontforge.

ستمنحك برامج وخطوط طرفية مختلفة نتائج مختلفة تمامًا.
XXX TODO
يحتاج هذا القسم إلى إعادة تشكيلها لأن المحطات التي تم اختبارها أصبحت الآن قديمة جدًا.


يستخدم Gnome-Terminal-3.38.3 خطوط متعددة باستخدام Freetype. بالنسبة لبعض الشخصيات ، مثل ⑫ (الرقم الاثني عشر المحصور) ، تكون الحروف الرسومية واسعة جدًا لخلية الأحرف وتتداخل بشكل سيء. يبدو أنه لا يوجد أي إعداد لإخبار طرف جنوم بالتقلص أو اقتطاع الحروف الرسومية العريضة بشكل مفرط.

يحتوي Gnome Terminal على عدد قليل جدًا من التفضيلات المستقرة للمستخدم ، ولكن يمكنك تعيين أحرف "العرض الغامضة" لتكون واسعة (خليتين) بدلاً من الضيق. هذا يساعد قليلاً ، على الأقل في اختبار التعذيب هذا.

ومع ذلك ، فإن وضع عرض غامض على نطاق واسع ليس الدواء الشافي. على سبيل المثال ، إذا تم استبدال الحروف الرسومية بخط من نسبة العرض إلى الارتفاع المختلفة تمامًا عن الافتراضي. على سبيل المثال ، إليك ما يحدث عندما يتم اختيار خط "DEC Terminal" (وهو ضعف ارتفاعه):

لاحظ أنه مع هذا الخط الافتراضي ، تتداخل الرسوم الحرارية على الرغم من أن العرض الغامض يتم تعيينه على نطاق واسع.
مثل Gnome -terminal ، يستخدم Xterm أيضًا خطوط متعددة عند تحديد خط مضاد (متجه) ( -fa Inconsolata -fs 18 ) ، وملء خطوط نظام أخرى إذا كان الخط المحدد محدودًا للغاية. يمكن لـ Xterm أيضًا العمل مع خطوط Bitmaps ، لكنها أكثر صعوبة.
ستستخدم Xterm خطًا واحدًا فقط إذا قمت بتحديد خط نقطية باستخدام -fn . هذا يعني أنك ستحتاج إلى العثور على خط واحد يغطي كل قسم من قسم Unicode الذي تستخدمه. هذا ليس سهلاً دائمًا.
يبدو خط Xterm الافتراضي ، المسمى "ثابت" ، اختيارًا فظيعًا لأنه يحتوي على عدد قليل جدًا من أحرف Unicode. ومع ذلك ، هذا لأن Xterm يستخدم إصدار Latin-1 بشكل افتراضي. هناك نسخة Unicode (10646) من "ثابت" والتي ليست سيئة من حيث التغطية. يأتي "الثابت" أيضًا في إصدار واسع للأحرف الآسيوية ، والذي يكتشف Xterm وتستخدمه تلقائيًا. لذلك ، ليس خيارًا سيئًا ، ويأتي مثبتًا مسبقًا.
xterm -fn '*fixed-medium-r-normal--20*10646*'

يملأ Xterm بالفعل أن الحروف الرسومية المفقودة من خلال استخدام خطوط أخرى عند تحديد خط مضاد للمعلومات باستخدام -fa . (استخدم -fs لتحديد حجم النقطة). ملحوظة: Antialiased هي كيف تشير Xterm إلى خطوط المتجهات مثل trueType و Opentype و Type 1.
في حين أن كلا من Xterm و Gnome-terminal يستخدمان Freetype لتقديم خطوط مضادة للمحاكاة ، على عكس Gnome-terminal ، يفرض Xterm حدود الشخصية ولا تدع الحروف الرسومية تتداخل. بدلاً من ذلك ، يتم اقتطاع الحروف الحربية العريضة بشكل مفرط. سواء كان هذا أفضل أم لا هو مسألة ذوق.

لاحظ أن XTREL الافتراضي لاستخدام لون الخط المحدد من قبل المستخدم بدلاً من الألوان المصممة بخط. مرة أخرى ، هذه مسألة ذوق ، ولكن تجدر الإشارة إلى أن معظم خطوط الرموز التعبيرية في الوقت الحاضر مصممة فقط بالألوان ، لذلك قد تبدو خطوط ألوان واحدة لبعض النطاقات قديمة أو تكون مفقودة.
إذا كنت ترغب في معرفة الخطوط التي يتم تحميلها أثناء تشغيل Fonttable ، فقم بتعيين متغير بيئة XFT_DEBUG إلى 3 قبل تشغيل Xterm.
XFT_DEBUG=3 xterm -fa DroidSansMono -fs 24
إذا كنت ترغب في إجبار Xterm على استخدام الخطوط التي طلبتها فقط ، فيمكنك القيام بذلك عن طريق تعيين مورد limitFontsets X إلى 0.
xterm -fa DroidSansMono -xrm "XTerm*vt100.limitFontsets: 0"
لاحظ أن Xterm سيحاول اكتشاف خطك تلقائيًا ما إذا كان خطك متاحًا أيضًا في إصدار الزوجي (لـ CJK). إذا لم تجدها ، فيمكنك تحديد خط "الزوجي" منفصل باستخدام -fd .
xterm -fs 24 -fa DroidSansMono -fd DroidSansFallback -xrm "XTerm*vt100.limitFontsets: 0"
لاحظ أنه إذا لم يكن لديك خط معين مثبت ، حتى إذا كنت تستخدم LimitFontSets: 0 ، فسيتم عرض خط بديل. مرة أخرى ، يمكنك استخدام XFT_DEBUG لمعرفة ما يجري.
XFT_DEBUG=3 xterm -fs 24 -fa DroidSansMono -fd DroidSansFallback -xrm "XTerm*vt100.limitFontsets: 0"