يحتوي هذا الدليل على أدوات لميزة تباعد نصف عرض Opentype للطباعة اليابانية/الصينية/الكورية.
تتيح هذه الميزة الطباعة الموصوفة في JLREQ 3.1.2 وضع علامات علامات الترقيم (الفواصل ، الفترات والأقواس) طريقة أساسية لوضع علامات علامات الترقيم ، أقواس ، إلخ. لليابانية ، و CLREQ 3.1.6.1 مساحة تعديل رمز تعديل علامات الترقيم للصينية. فيما يلي شخصية من JLREQ:
قد تساعد مناقشة مبكرة في مقالة Adobe CJK Type المدونة والجزء الثاني على فهم الميزة بشكل أفضل.
يمكنك العثور على نموذج نص هنا. تستخدم هذه العينة الخطوط المصممة باستخدام هذه الأداة.
يحدد Opentype 4 علامات ميزة للخطوط لدعم هذه الميزة:
chws " ، وعلامة ميزة " vchw " كنظير لها في التدفق العمودي.halt " ، وعلامة ميزة " vhal " كنظير لها في التدفق العمودي.جميع الميزات الأربعة مطلوبة ، حيث يتم تطبيق كل ميزة في سياق مختلف.
تضيف هذه الحزمة هذه الميزات إلى أي خطوط Opentype/TrueType عندما تكون مفقودة ، عن طريق حساب جداول الميزات من بيانات مثل نقاط رمز Unicode والخطوط العريضة.
يمكنك تثبيت هذه الأداة بواسطة PIP أو PIPX.
pipx install east-asian-spacingpip install east-asian-spacingيرجى العلم أنه إذا قمت بالتثبيت مع PIP في البيئة العالمية ، فقد تتسبب تبعياتها في تعارض مع الحزم الأخرى. إذا كان كل ما تحتاجه هو أداة سطر الأوامر ، يمكن لـ PIPX تثبيتها على مستوى العالم مع الاستمرار في عزلها في بيئة افتراضية.
يرجى أيضًا الاطلاع على قسم الحزمة التثبيت إذا كنت ترغب في استخدام هذه الحزمة من برنامج Python الخاص بك ، أو قسم الاستنساخ والتثبيت إذا كنت ترغب في تشخيص الخطوط أو الرمز بمزيد من التفاصيل.
يضيف المثال التالي الميزة إلى input-font-file ويحفظها إلى دليل build .
east-asian-spacing -o build input-font-fileيحتوي قسم الاختبار على موارد للتحقق من الاختلافات واختبار الخطوط التي قمت بإنشائها.
للحصول على الخيارات والاستخدامات الأخرى ، يمكن لخيار --help إظهار القائمة الكاملة للخيارات.
الخوارزمية تنطبق على أي خطوط CJK. يتم اختبار الخطوط التالية في كل إصدار:
يتم اختبار خطوط CJK في fonts.google.com في حزمة chws_tool. كما تم اختبار العديد من الخطوط الأخرى أثناء التطوير.
عند إضافة الميزات إلى خطوطك ، يعد اختبار HTML أداة مفيدة للتحقق من النتائج. إذا واجهت أي مشاكل في خطوطك ، فيرجى إبلاغ القضايا.
يرجى أيضًا رؤية الموضوعات المتقدمة أدناه إذا كنت ترغب في تخصيص السلوكيات الافتراضية لخطوطك.
عندما يكون ملف خط الإدخال عبارة عن مجموعة truetype (TTC) ، تضيف هذه الأداة الميزة إلى جميع الخطوط في TTC افتراضيًا.
إذا كنت ترغب في إضافة الميزة إلى بعض الخطوط فقط في TTC ، فيمكنك تحديد قائمة مفصل بين مؤشرات الخطوط. يضيف المثال التالي الميزة إلى فهرس الخط 0 و 1 ، ولكن ليس للخطوط الأخرى في TTC.
east-asian-spacing --index=0,1 input-font-file.ttcيمكنك تثبيت هذه الحزمة باستخدام أدوات إدارة الحزم المفضلة لديك مثل الشعر أو PipenV أو PIP.
pip install east-asian-spacingpipenv install east-asian-spacingpoetry add east-asian-spacingيرجى أيضًا رؤية قسم الاستنساخ وتثبيت قسم ما إذا كنت ترغب في تشخيص الخطوط أو الرمز بمزيد من التفاصيل.
ينشئ المثال التالي خطًا يحتوي على الميزات الموجودة في دليل " build " إذا كانت الميزات قابلة للتطبيق.
import east_asian_spacing
async def main_async ():
builder = east_asian_spacing . Builder ( "fonts/input.otf" )
output_path = await builder . build_and_save ( "build" )
if output_path :
print ( f"Saved to { output_path } " )
else :
print ( "Skipped" )تتوفر صفحة اختبار HTML للتحقق من سلوك الخطوط على المتصفحات.
يمكن أن يختبر الخطوط التي قمت بإنشائها محليًا.
fonts " في بداية كتلة <script> .ملاحظة ، عندما ترغب في اختبار مجموعة TTC (مجموعة truetype) ولكن لا يمكن للمتصفح سوى تحميل الخط الأول في TTC ، فإن الأمر التالي يستخرج جميع خطوط Opentype (.OTF أو .TTF) من ملف خط مجموعة Opentype (.ttc أو .OTC).
east-asian-spacing ttc build/NotoSansCJK-Regular.ttc يمكن أن ينشئ MOMMAND dump الفرعي أنواعًا مختلفة من ملفات تفريغ النص.
الاستخدام الأكثر بساطة هو إظهار قائمة الجداول. يشبه هذا خيار " -l " لـ TTX ، باستثناء مجموعات TrueType (TTC) ، يمكن لهذه الأداة أن تعرض جداول لجميع الخطوط في TTC ، إلى جانب الجداول التي تتم مشاركة الجداول معها.
east-asian-spacing dump build/NotoSansCJK-Regular.ttc يقوم خيار " -o " بإنشاء ملفات قائمة الجدول في الدليل المحدد:
east-asian-spacing dump -o build/dump build/ * .ttc يقوم خيار " --ttx " بإنشاء مقالب نصية TTX لجميع الجداول بالإضافة إلى ملفات قائمة الجدول. هذا مشابه لخيار " -s " لـ TTX ، إلا أنه يمكنه تفريغ جميع الجداول في مجموعات TrueType (TTC).
east-asian-spacing dump -o build/dump --ttx build/ * .ttc يمكن أن ينشئ MOMMAND dump الفرعي أيضًا ملفات تفريغ لملفين خطين ومقارنتها. يساعد هذا في تصور الاختلافات في خطين ، على وجه التحديد ، ملفات الخط التي أنشأتها من ملفات الخط الأصلية.
east-asian-spacing dump -o build/diff --diff source_fonts_dir build/NotoSansCJK.ttc يحسب المثال أعلاه الاختلافات بين source_fonts_dir/NotoSansCJK.ttc و build/NotoSansCJK.ttc من خلال إنشاء 3 مجموعات من الملفات:
build/NotoSansCJK.ttc في دليل build/diff/dump .source_fonts_dir/NotoSansCJK.ttc في دليل build/diff/src .build/diff .ملاحظة: يكون خيار "
--diff" أكثر كفاءة من القيام بكل هذه الأشياء ، خاصة بالنسبة للخطوط الكبيرة ، لأنه يتخطى إنشاء TTX من الجداول عندما تكون ثنائية متساوية.
خيار -o اختياري. عندما يتم حذفه ، يخرج المفصل الفرعي Diff إلى stdout .
east-asian-spacing dump --diff source_fonts_dir build/NotoSansCJK.ttc | lessلإنشاء ملفات Diff لجميع الخطوط التي قمت ببنائها ، يمكنك تنشيط الإخراج على النحو التالي:
east-asian-spacing -p * .otf | east-asian-spacing dump -o build/diff - يطبع خيار " -p " مسارات خط الإدخال والإخراج إلى stdout بتنسيق القيم المنفصلة في علامة التبويب. القائمة الفرعية dump مع الوسيطة " - " تقرأ هذه القائمة من stdin ، وتنشئ ملفات تفريغ النص وتفريغها في دليل build/diff . لا يعد خيار " --diff " ضروريًا في هذه الحالة ، لأن مسارات الخط المصدر يتم توفيرها من الأنبوب.
بمجرد مراجعة ملفات Diff التي تم إنشاؤها أعلاه ، أو الخطوط التي تم اختبارها التي تقوم بإنشائها ، يمكنك نسخ ملفات Diff في دليل references . ثم عندما تريد أن تنشئها مرة أخرى ، مثل عندما يتم تحديث الخطوط أو عندما يتم تغيير بيئة الإنشاء ، يمكنك مقارنة ملفات Diff مع الملفات المرجعية لمعرفة مدى اختلاف الخطوط الجديدة عن المباني السابقة.
باستخدام خيار " -r " ، يقوم MOMMAND dump بإنشاء ملفات Diff بين ملفين خطين ، ومقارنة ملفات Diff مع ملفات Diff التي تمت مراجعتها مرة واحدة في دليل references .
الاستخدام النموذجي لهذا الخيار هو كما يلي:
east-asian-spacing -p -g=build/glyphs * .otf |
east-asian-spacing dump -o=build/diff -r=references - يرجى الاطلاع على قسم Diff لخيار " -p " وأنابيب.
تشمل البرامج النصية build*.sh هذا الخيار.
يختبر اختبار الأشكال سلاسل اختبار ويتحقق مما إذا كان التباعد السياقي قد تم تطبيقه أم لا.
يضبط خيار --test مستوى اختبار الشكل.
east-asian-spacing --test 2 -v -o build input-font-fileالمستوى 0 يعطل اختبار الشكل. يدير المستوى 1 اختبار الدخان باستخدام مجموعة صغيرة من العينات. يدير المستوى 2 اختبار الشكل باستخدام مجموعة كبيرة من سلاسل الاختبار. القيمة الافتراضية هي 1.
الخوارزمية هي اللغة اللاأسية وتنطبق على أي خطوط CJK.
تحدد هذه الحزمة أزواج الرسوم الرمزية لضبط الفواصل من خلال مجموعة من نقاط رمز Unicode المحددة في فئة Config .
ثم لكل زوج ، يتحقق مما إذا كانت الفواصل قابلة للتطبيق من خلال فحص الخطوط العريضة للحساب وحساب مربعات حرق الحبر من الحروف الرسومية. على سبيل المثال ، عندما تكون الحروف الرسومية سميكة للغاية ، قد لا تحتوي الرسوم الحرارية على كمية كافية من الفواصل الداخلية ، وقد يتسبب تطبيق الفواصل في تصادم الحروف الرسومية. تكتشف هذه الحزمة تلقائيًا مثل هذه الحالات وتجنب تطبيق الفواصل على هذه الأزواج.
يمكن تعطيل هذا السلوك التلقائي عن طريق تحديد اللغات أدناه ، أو عن طريق تعيين Config.use_ink_bounds إلى False في برنامج Python الخاص بك.
هناك اتفاقيات خاصة باللغة حول مكان وضع أحرف علامات الترقيم في مساحات الرسول الرسمية. على سبيل المثال ، يجب وضع التوقف الكامل للأدوغرافيا U+3002 في الزاوية اليسرى من مساحة Glyph باللغة اليابانية ، بينما يجب وضعها في المركز باللغة الصينية التقليدية.
بشكل افتراضي ، تحدد هذه الحزمة مثل هذه الاختلافات من الخطوط العريضة Glyph كما هو موضح في قسم الخوارزمية أعلاه. ولكن يمكنك تحديد علامة نظام لغة Opentype للسماح لهذه الحزمة باتباع اتفاقية اللغة بدلاً من استخدام الخطوط العريضة لـ Glyph. يخلط المثال التالي التحديد التلقائي عن طريق الخطوط العريضة ، ويحدد أن الخط هو خط ياباني.
east-asian-spacing --language=JAN input-font-fileبالنسبة لمجموعات TrueType (TTC) ، ينطبق خيار اللغة على جميع الخطوط في TTC افتراضيًا. عندما تريد تحديد لغات مختلفة لكل خط في TTC ، فإنه يقبل قائمة مفصولة بفاصلة. يحدد المثال التالي الكوري لمؤشر الخط 1 ، الصيني المبسط لمؤشر الخط 2 ، وتلقائيًا لجميع الخطوط الأخرى.
east-asian-spacing --language=,KOR,ZHS input-font-file.ttc يمكنك الجمع بين هذين الخيارين. يطبق المثال التالي JAN على الفهرس 2 ، و ZHS على الفهرس 3. لا يتم تغيير الخطوط الأخرى في TTC.
east-asian-spacing --index=2,3 --language=JAN,ZHS input-font-file.ttcقد ترغب في ضبط الأزواج التي يجب أن تعدل الأزواج ، في حالات مثل متى قد لا تتوقع خطوطك الفواصل لبعض الشخصيات. حاليا ، هذا ممكن فقط من برامج بيثون.
للحصول على مثال بسيط ، يرجى الاطلاع على وظيفة test_config في tests/config_test.py .
مشروع CHWS_TOOL هو مثال فعلي لتخصيص هذه الحزمة.
تستخدم هذه الحزمة محرك تشكيل HarfBuzz باستخدام Cython Bindings UharfBuzz.
إذا كنت ترغب في استخدام بناء معين من HarfBuzz ، فيمكن لهذه الأداة استدعاء أداة سطر أوامر HB على شكل HB بدلاً من ذلك عن طريق ضبط متغير بيئة SHAPER .
export SHAPER=hb-shapeلتثبيت HB على Linux:
sudo apt get libharfbuzz-binلتثبيت HB على جهاز Mac مع Homebrew:
brew install harfbuzzقد تكون الإرشادات الخاصة بالمنصات الأخرى متوفرة في command not-found.com.
إذا كنت بحاجة إلى تشخيص الخطوط أو الكود ، يوصى بالاستنساخ والتثبيت باستخدام الشعر:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
poetry install
poetry shellهذه الطريقة لها مزايا التالية:
-e " أو "وضع التطوير" setuptools ).يمكنك أيضًا تثبيت الدليل المستنسخ باستخدام PIP إذا كنت تفضل:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
pip install .يحتوي هذا المستودع على اختبارات الوحدة باستخدام Pytest. تغطي اختبارات الوحدة الوظائف الأساسية بما في ذلك اختبارات الشكل ، وإضافة الميزة إلى خط اختبار ، ومقارنتها بالمراجع.
إذا اتبعت قسم الاستنساخ والتثبيت ، فسيتم تثبيت أدوات اختبار الوحدة بالفعل. قبل تشغيلها لأول مرة ، تحتاج إلى تنزيل الخطوط للاختبار:
./tests/download_fonts.pyيمكنك بعد ذلك إجراء اختبارات:
pytestأو قم بتشغيلها مع إصدارات متعددة من Python باستخدام Tox:
tox يحتوي دليل scripts على بعض البرامج النصية الصغيرة.
build*.sh scripts مفيدة لبناء خطوط ، وحساب Diff من خطوط المصدر ، ومقارنة ملفات Diff مع المراجع. فيما يلي استخدام مثال.
./scripts/build.sh input-font-file.otf -v
./scripts/build-noto-cjk.sh ~ /fonts/noto-cjk -v