روش‌های تنظیم طول اتصال در ترکیبات دلخواه فونت‌‌های عربی

این مقالۀ کوتاه به صورت تخصصی در مورد تکنیک‌های تنظیم طول اتصال در ترکیبات دلخواه فونت‌های عربی بحث می‌کند. هدف اصلی، شناخت روش‌های مختلف و توجه به امکاناتیست که opentype برای این کار فراهم می‌کند. در ابتدا تعریف مختصری از کرنینگ ارائه می‌شود، در ادامه به بررسی مشکل رایجی که حاصل ادغام فرم حروف عربی در قالب تکنولوژی نرم‌افزاری فعلی ساخت فونت است می‌پردازیم و در نهایت تکنیک‌های مختلف را با مثال معرفی می‌کنیم.

 

کرنینگ

کرنینگ به عمل تنظیم فاصلۀ نسبی بین دو حرف دلخواه (یا دو گروه از حروف دلخواه) اشاره دارد. برخی از حروف(یا برخی از گروه‌های حرفی) به خاطر هندسۀ خود وقتی کنار هم قرار می‌گیرند نیاز به نظیم مجدد فواصل بین خود دارند، این تنظیم در حالت کلی بوسیلۀ چهار عدد(در مبنای اندازۀ مربع em تعریف شده در فونت) اعمال می‌شود اما در حالت ساده فقط شامل یک عدد مثبت یا منفی می‌شود که میزان نزدیکی(با اعداد منفی) یا دوری(با اعداد مثبت) یک حرف را نسبت به حرف قبلی تعیین می‌کند (قبلی و بعدی نسبت به جهت نوشتار تعیین می‌شود) مثال معروف کرنینگ برای لاتین جفت حرف AV و برای عربی جفت حرف «رک» است.

 

 

مثالی از دو جفت کرنینگ لاتین و عربی

 

تغییر طول اتصال حروف متصل عربی

اگر جفت حرفی که نیاز به تنظیم فاصلۀ نسبی دارند از نوع حروف متصل باشند، انجام کرنینگ مثبت باعث جدا شدن اتصال بین دو حرف شده و کرنینگ منفی با توجه به انحنای اتصال بین دو حرف محدودیت خواهد داشت. در این مواقع می‌توان بوسیلۀ جانشینی‌های مناسبی طول اتصال را در مواقع لزوم به صورت خودکار تغییر داد. انجام این کار از نظر فنی کرنینگ محسوب نمی‌شود اما در واقع گسترش مفهوم کرنینگ برای حروف متصل است.

 

یک مثال واقعی

یکی از مشکلات فونت‌های عربی درگیری نقاط با یکدیگر و بدنۀ حروف است. یک مورد از این درگیری‌ها مربوط به حروف نقطه دار پایین در فرم‌های ابتدایی و میانی شامل « ﻳ »، « ﻴ »، « ﭘ » و « ﭙ » (و البته « ﺑ » و « ﺒ » در گسترۀ پایین‌تر) و حروف مشابه(= گروه الف) هستند. این حروف در یک طراحی با فواصل فشرده(با عرض کاراکتر space کم) مشکل ساز می‌شوند، اگر از روش کوچک کردن و تغییر زاویۀ قرارگیری نقاط برای حل مشکل صرف نظر کنیم(انجام این دو کار معمولاً روی خوانایی تاثیر منفی دارد)، مکان قرارگیری این نقاط باعث تداخل آنها از سمت راست با « ر » و حروف هم‌شکل با آن می‌شود، اگر بخواهیم عرض حفره‌ای که بین « ر » و این گروه تشکیل می‌شود را کاهش دهیم(تا با عرض کم کاراکتر فاصله قابل مقایسه و باعث بروز اشتباه در خوانایی متن نشود)، مجبوریم نقاط این حروف را به سمت چپ هل دهیم، جاییکه از سمت چپ با بدنۀ حروفی مانند « ﻰ »، « ﻦ »، « ﻮ »، « ﻖ »، « ﻞ »، « ﻬ » و …(گروه ب) درگیر می‌شوند. اینجاست که نیازمند افزایش طول اتصال بین گروه الف و ب هستیم.

سوال: چرا این مشکل در فونت‌های قدیمی وجود ندارد؟ این مشکل همیشه وجود داشته است اما در فونت‌های قدیمی، نقاط کوچکتر و نزدیکتر، اجزا ریزتر و فواصل بیشتر بوده بنابراین مشکل محدود کننده نبود و به صورت آشکارا دیده نمی‌شد. علاوه بر این محل قرارگیری نقاط « ﻳ »، « ﻴ »، « ﭘ »، « ﭙ »، « ﺑ » و « ﺒ » که به طور کاملاً مشهودی به سمت راست تمایل دارند(ترکیب « یا » را در تصویر زیر در فونت‌های قدیمی ببینید) برای فرار از مشکل مطرح شده است.

سوال: چرا برای حل این مشکل طول حروف گروه الف را بیشتر نمیکنیم؟ زیرا نمیخواهیم طول آنها در موقعیت‌های دیگر نیز بیشتر شود.

 

 

مقایسۀ وضعیت قرارگیری نقاط « ﻳ » در فونت‌های قدیمی و جدید

 

 

 

تکنیک‌های opentype برای تنظیم طول اتصال بین حروف متصل عربی

 

۱- جایگرینی چندتایی

بهینه‌ترین روش فنی برای «افزایش» طول اتصال استفاده از جایگرینی چندتایی حروف است، در این روش حرف موردنظر را با خودش به علاوه یک یا چند اتصال کوچک با طول دلخواه جایگرین می‌کنیم. به طور مثال برای حل مشکل مطرح شده در مثال بالا در تایپ‌فیس میخک به همین روش عمل شده است.(در این مورد جایگزینی به صورت دوتایی انجام شده، اما در حالت کلی تکه‌های متصل شونده می‌توانند بیشتر شوند تا ترکیبات طولی متنوع‌تری بوجود آید)

 

جایگزینی دوتایی برای افزایش طول اتصال در نسخۀ سوم فونت میخک

 

 

پیاده سازی در opentype:(با فرض ایجاد و ذخیرۀ تکۀ متصل‌شونده در uniE008)

(۲ نکته وجود دارد: اول آنکه کدهای زیر استاندارد fontforge هستند و در حالت کلی می‌توان آنها را ساده‌تر هم نوشت(اسامی گلیف‌های عربی در fontforge با uni به انضمام کد پوینت مربوط به آدرس یونیکد گلیف نمایش داده می‌شود)، دوماً نوشتن جدول  MultipleSubstitution0برای یک مورد ضروری نیست اما این جدول در حالت کلی جایگزینی‌های بیشتری را شامل میشود، بنابراین منطقی است که به صورت نوشته شده دسته‌بندی شود.)

lookup MultipleSubstitution0 {
  lookupflag RightToLeft IgnoreMarks;
    sub \uniFEF3 by \uniFEF3 \uniE008 ;
} MultipleSubstitution0;

lookup ContextualAlternateslookup1 {
  lookupflag RightToLeft IgnoreMarks;
    sub [\uniFEF3 ]'lookup MultipleSubstitution0  [\uniFEE6 ] ;
} caltContextualAlternateslookup1;

feature calt {
 script DFLT;
     language dflt ;
      lookup caltContextualAlternateslookup10;
 script arab;
     language dflt ;
      lookup caltContextualAlternateslookup10;
     language FAR  exclude_dflt;
      lookup caltContextualAlternateslookup10;
     language KUR  exclude_dflt;
      lookup caltContextualAlternateslookup10;
} calt;

 

مزایا:

– اصلی‌ترین مزیت این روش آن است که هیچ حرف یا ترکیب جدیدی اضافه نمی‌شود، بنابراین نیازی به کدهای کرنینگ جدید یا mark گذاری اضافی نیست و مراحل ساخت از نظر فنی بسیار ساده‌ است.

– قابلیت تنظیم طول اتصال در این روش بسیار خوب است.

معایب:

– متأسفانه نرم‌افزارهای adobe در متونی با فونت‌های استفاده کننده از این روش، عملکرد درستی در حرکه‌گذاری ندارند. دلیل اصلی آن است که حرکه را روی قسمت متصل شونده اعمال می‌کنند نه کل ترکیب ایجاد شده…اقدامات جانبی دیگر مانند mark گذاری روی قسمت‌های متصل شونده و بردن قسمت متصل شونده به جایگزینی با حرف بعدی نیز بی‌فایده است، نتیجه همان است یا اشکالات دیگری در نرم‌افزارهای دیگر (مخصوصاً در مرورگرها) پدید می‌آید.

– از این روش برای کاهش طول اتصال نمی‌توان استفاده کرد.

 

۲- جایگرینی تکی

یکی از روشهای خوب و کم‌خطر استفاده از جایگرینیِ تکیِ حروف است، به طور مثال برای حل مشکل مطرح شده در مثال، کافیست یک یا چند نمونه از حروف « ﻳ »، « ﻴ »، « ﭘ »، « ﭙ »، « ﺑ » و « ﺒ » با عرض بیشتر طراحی کنیم و در مواقع لزوم جایگرین کنیم. در تایپ‌فیس‌های آذرمهر و پینار از این روش استفاده شده است. نمونۀ زیر از تایپ‌فیس پینار است:

 

 

مقایسۀ فونت‌های مختلف از نظر نقطه‌گذاری

 

پیاده سازی در opentype:(با فرض ایجاد و ذخیرۀ « ﻳ » جدید کشیده شدۀ درuniE013)

(۲ نکتۀ تکراری وجود دارد! اول آنکه کدهای زیر استاندارد fontforge هستند و در حالت کلی می‌توان آنها را ساده‌تر هم نوشت(اسامی گلیف‌های عربی در fontforge با uni به انضمام کد پوینت مربوط به آدرس یونیکد گلیف نمایش داده می‌شود)، دوماً نوشتن جدول  SingleSubstitution0برای یک مورد ضروری نیست اما این جدول در حالت کلی جایگزینی‌های بیشتری را شامل میشود، بنابراین منطقی است که به صورت نوشته شده دسته‌بندی شود.)

lookup SingleSubstitution0 {
  lookupflag RightToLeft IgnoreMarks;
    sub \uniFEF3 by \uniE013 ;
} SingleSubstitution0 ;

lookup ContextualAlternateslookup1 {
  lookupflag RightToLeft IgnoreMarks;
    sub [\uniFEF3 ]'lookup SingleSubstitution0  [\uniFEE6 ] ;
} caltContextualAlternateslookup1;

feature calt {
 script DFLT;
     language dflt ;
      lookup caltContextualAlternateslookup10;
 script arab;
     language dflt ;
      lookup caltContextualAlternateslookup10;
     language FAR  exclude_dflt;
      lookup caltContextualAlternateslookup10;
     language KUR  exclude_dflt;
      lookup caltContextualAlternateslookup10;
} calt;

 

مزایا:

– جایگزینی هیچ اثر قابل تشخیصی بر جا نمیگذارد، این مورد مخصوصاً هنگامی که از رنگ‌های حاشیه‌ای برای متن استفاده می‌شود نسبت از روش اول بهتر است.

– در صورتی که حرف جایگزین شده طول کوتاه‌تری داشته باشد می‌توان به روش مشابه طول اتصال را کمتر کرد. (برای مثال اتصال بین «‍ی» و حروف دیگر در اعلب موارد می‌تواند کمتر شود.)

معایب:

– انعطاف این روش در قابلیت ساخت انواع طول اتصال از روش اول کمتر است، هر یک از حروف جایگزین شده باید به صورت جداگانه طراحی شوند و علاوه بر آن، حرف جدید باید در کرنینگ حروف نیز در نظر گرفته شود.

 

 

استفاده از لیگیچر

در فونت‌هایی مانند نستعلیق و تحریری که حروف متصل، اتصالات غیرهم‌سطح دارند یا حتی در فونت‌هایی بر اساس خط نسخ که اتصالات کاملاً تخت نیستند، نمی‌توان از روش اول استفاده کرد و استفاده از روش دوم نیز محدودیت زیادی دارد. در این شرایط می‌توان از لیگیچر که در واقع جایگزین کردن دو طرف با یک ترکیب از پیش ساخته شدۀ است، استفاده کرد.

در نمونۀ زیر از فونت زهیر البازی از لیگیچر برای افزایش طول اتصال استفاده شده است، گر چه هدفِ اصلیِ استفاده از لیگیچر در اینجا (و در بیشتر فونت‌های غیر هم سطح دیگر) ایجاد دسترسی به قابلیت‌های خطاطی تعبیه شده در فونت است نه تنظیم طول اتصال به صورت خودکار، اما می‌شود از آن برای انجام این کار نیز بهره برد.(در اینجا هم صرفاٌ به عنوان یک روش فرعی برای این کار معرفی می‌شود)

 

 

استفاده از لیگیچر برای تنظیم طول اتصال در فونت ظهیر البازی

 

مزایا:

– دست طراح در طراحی لیگیچر بسیار بازتر از روش‌های دیگر است.

– این روش هم مانند روش دوم در جایگزینی هیچ اثر قابل تشخیصی بر جا نمیگذارد.

– از این روش برای طراحی استایل‌های کشیدگی اتصال حروف و لیگیچر کردن این ترکیبات با « ـ » نیز استفاده می‌شود.

معایب:

– پیاده‌سازی این روش، به دلیل نیاز به طراحی منحصر به فرد هر لیگیچر، از دو روش بالا سخت‌تر است.

مطالب مرتبط

روش‌های تنظیم طول اتصال در ترکیبات دلخواه فونت‌‌های عربی

این مقالۀ کوتاه به صورت تخصصی در مورد تکنیک‌های تنظیم طول اتصال در ترکیبات دلخواه فونت‌های عربی بحث می‌کند. هدف اصلی، شناخت روش‌های مختلف و توجه به امکاناتیست که opentype برای این کار فراهم می‌کند. در ابتدا تعریف مختصری از...

تایپ‌فیس پینار: جزئیات بروزرسانی نسخۀ دوم

این مقاله به مناسبت بروزرسانیِ تایپ‌فیس پینار به نسخۀ دوم و برای آشنایی شما با امکانات جدید آن نوشته شده. نسخۀ دوم بهبودهای طراحی و امکانات جدید زیادی دارد. در همین نسخه، بخش لاتین با تایپ‌فیس Commissioner جایگزین شده تا...

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *