در گرافیک برداری، از منحنیهای بزیه برای مدلسازی منحنیهای نرمی استفاده میشود که میتوانند تا بینهایت بزرگ و کوچک شوند. از پیوند زدن چند منحنی بزیه ساده یک مسیر (به انگلیسی: Path) (منحنی بزیهٔ پیچیده) حاصل میشود. مسیرها دارای محدودیتهای تصویری گرافیک شطرنجی (به انگلیسی: Raster) نیستند و کار با آنها از نظر شهودی آسان است.
مبنای ریاضیاتی منحنیهای بزیه چندجملهایهای برنشتاین است که از سال ۱۹۱۲ شناخته شدهبود، ولی از این چندجملهای تا حدود ۵۰ سال بعد در گرافیک استفادهای نشد تا این که مهندس فرانسویپیر بزیه برای طراحی بدنهٔ خودروهای رنو از آن بهره برد.
هر منحنی بزیه دو نقطه لنگر (به انگلیسی: Anchor point) و دو نقطه کنترل (به انگلیسی: Control point) دارد. نقطههای لنگر ابتدا و انتهای منحنی را مشخص میکنند و نقطههای کنترل انحنای مسیر را تعیین مینمایند. پارهخطی که یک نقطهٔ لنگر را به یک نقطهٔ کنترل وصل میکند، به دستگیره (به انگلیسی: Handle) معروف است.
اختراع
مبنای ریاضی منحنیهای بزیه (چندجملهایهای برنشتاین) در سال ۱۹۱۲ تبیین شد اما از این چندجملهایها در زمینه گرافیک استفادهای نشد. حدود ۵۰ سال بعد وقتی پل دو کاستلژو ریاضیدان در ۱۹۵۹، الگوریتم دو کاستلژو (یک روش عددی پایدار برای ارزیابی منحنیها) را ایجاد کرد، برای نخستین بار از این چندجملهایها در طراحی اتومبیل سیتروئن به کمک رایانه استفاده کرد.[۱] این چندجملهایها در دهه ۱۹۶۰ توسط مهندسفرانسوی پیر بزیه، که از آنها برای طراحی بدنه اتومبیل در شرکت رنو استفاده میکرد، بهطور گسترده تبلیغ شد.
موارد خاص
منحنی بزیه توسط مجموعهای از نقاط کنترلP0 تا Pn تعریف میشود، جایی که n ترتیب آن را مینامند (n = ۱ برای خطی، ۲ برای درجه دوم و غیره). اولین و آخرین نقاط کنترل همیشه نقاط انتهایی منحنی هستند. با این حال، نقاط کنترل میانی (در صورت وجود) بهطور کلی روی منحنی قرار ندارند. در بخشهای زیر، همهی ترکیبهای خطی را آفین در نظر بگیرید؛ یعنی حاصل جمع ضرایب، برابر 1 است.
منحنیهای خطی بزیه
با توجه به نقاط مجزای P0 و P1، یک منحنی خطی بزیه فقط یک خط مستقیم بین این دو نقطه است. این منحنی را با معادله
منحنی درجه دوم بزیه مسیری است که با داشتن نقاط P0، P1 و P2 توسط تابع ردیابی میشود:
که به ترتیب میتواند به عنوان درونیابی خطی نقاط متناظر در منحنیهای خطی بزیه از P0 به P1 و از P1 به P2 تفسیر شود. اگر معادلهی قبلی را ساده کنیم، به معادله زیر میرسیم:
این را میتوان به گونهای نوشت که تقارن را با توجه به P1 برجسته کند:
حال میتوانیم مشتق منحنی بزیه را نسبت به t محاسبه کنیم:
پس میتوان نتیجه گرفت که مماسهای منحنی در نقاط P0 و P2 در نقطهی P1 یکدیگر را قطع میکنند. وقتی t از ۰ به ۱ افزایش مییابد، منحنی از P0 در جهت P1 حرکت میکند، سپس خم میشود تا از جهت P1، به P2 برسد.
چهار نقطه P0، P1، P2 و P3 در صفحه یا در فضای بعد بالاتر، منحنی بزیه مکعبی را تعریف میکنند. منحنی از P0 شروع میشود و به سمت P1 میرود و و از جهت P2،به P3میرسد. معمولاً از P1 یا P2 عبور نخواهد کرد. این نقاط فقط برای ارائه اطلاعات جهت دار وجود دارد. فاصله بین P1 و P2 «تا چه حد» و «چگونه سریع» حرکت منحنی به سمت P1 قبل از انحراف به سمت P2 را تعیین میکند.
نوشتن BPi,Pj,Pk(t) برای منحنی درجه دوم بزیه که توسط نقاط Pi، Pj و Pk تعریف شدهاست، منحنی بزیه مکعب را میتوان به عنوان ترکیبی از دو منحنی درجه دوم بزیه تعریف کرد:
فرم صریح منحنی به شرح زیر است:
برای بعضی از گزینههای P1 و P2 منحنی ممکن است خودش را قطع کند یا حاوی یک تکینگی (cusp) باشد.
هر سری از ۴ نقطه مشخص را میتوان به یک منحنی بزیه مکعب تبدیل کرد که به ترتیب از هر ۴ نقطه عبور میکند. با توجه به نقطه شروع و پایان برخی از منحنیهای بزیه مکعب، و نقاط امتداد منحنی مربوط به t = ۱/۳ و t = ۲/۳، نقاط کنترل منحنی بزیه اصلی را میتوان بازیابی کرد.[۲]
مشتق منحنی بزیه مکعب با توجه به t مقدار زیر است:
مشتق دوم منحنی بزیه با توجه به t مقدار زیر است:
تعریف کلی
منحنیهای بزیه را میتوان برای هر درجه n میتوان تعریف کرد.
تعریف بازگشتی
یک تعریف بازگشتی برای منحنی بزیه از درجه n، آن را به عنوان یک ترکیب خطی نقطه به نقطه (درون یابی خطی) از یک جفت نقطه مربوط در دو منحنی بزیه از درجهبیان میکند.
اجازه دهید منحنی بزیه را مشخص میکنیم که با انتخاب هر یک از نقاط P0، P1 ،. ، Pn سپس برای شروع،
توجه داشته باشید که t0 = ۱، (1 - t) 0 = ۱، و ضریب دوجملهای، ، است:
نقاط Pi را برای منحنی بزیه نقاط کنترلی مینامند. چند ضلعی حاصل از اتصال نقاط بزیه با خطوط، شروع با P0 و پایان دادن به Pn، چند ضلعی بزیه (یا چند ضلعی کنترل) نامیده میشود. بدنه محدب چند ضلعی بزیه شامل منحنی بزیه است.
این میتواند عملی باشد اگر میتواند قبل از بسیاری از ارزیابیها محاسبه شود ؛ با این وجود باید احتیاط کرد زیرا منحنیهای مرتبه بالا ممکن است از ثبات عددی برخوردار نباشند (در صورت بروز این الگوریتم دی Casteljau باید استفاده شود). توجه داشته باشید که محصول خالی ۱ است.
خواص
منحنی از P0 شروع میشود و در Pn پایان مییابد. این ویژگی به اصطلاح نقطه درونیابی است.
منحنی یک خط مستقیم اگر و تنها اگر تمام نقاط کنترلشونده خطی باشند.
شروع و انتهای منحنی به ترتیب با قسمت اول و آخرین چند ضلعی بزیه مماس است.
یک منحنی را میتوان در هر نقطه به دو زیر شاخه، یا به دلخواه بسیاری از زیرشاخهها تقسیم کرد که هر یک از آنها نیز منحنی بزیه است.
برخی از منحنیهای ساده به نظر میرسند، مانند دایره، نمیتوان دقیقاً توسط منحنی بزیه یا بزیه بهصورت قطعه ای توصیف کرد. اگرچه یک منحنی بزیه مکعب چهار قطعه میتواند یک دایره تقریبی را ببینید (به منحنی ترکیبی بزیه مراجعه کنید)، با حداکثر خطای شعاعی کمتر از یک قسمت در هزار، وقتی هر نقطه کنترل داخلی (یا نقطه آفلاین) فاصله باشد به صورت افقی یا عمودی از یک نقطه کنترل بیرونی روی یک دایره واحد. بهطور کلی، یک منحنی بزیه مکعب n-قطعه میتواند یک دایره را تقریبی بداند، زمانی که هر نقطه کنترل داخلی فاصله است از یک نقطه کنترل بیرونی روی یک دایره واحد، جایی که t 360 / n درجه است، و n > 2.
هر منحنی درجه دوم بزیه نیز یک منحنی بزیه مکعب است، و بهطور کلی، هر منحنی بزیه درجه n نیز منحنی درجه m برای هر m > n است. بهطور جزئی، منحنی درجه n با نقاط کنترل P0 ، . . ، Pn معادل (با پارامتری سازی) منحنی درجه n + 1 با نقاط کنترل P '0، است. . . ، P 'n + 1، جایی که .
منحنیهای بزیه دارای خاصیت کاهش تنوع هستند. معنای این از لحاظ شهودی این است که منحنی بزیه بیش از چند ضلعی نقاط کنترل خود را «موج دار شود» و ممکن است در واقع کمتر از آن «موج دار شود».[۳]
کنترل محلی در درجه n بزیه منحنی وجود ندارد. معنای آن این است که هر گونه تغییر به یک نقطه کنترل نیاز به تجدید محاسبه و در نتیجه جنبه از کل منحنی تأثیر میگذارد، "اگر چه بیشتر که یکی از نقطه کنترل که تغییر شدهاست، تغییر در منحنی کوچکتر است ".[۴]
یک منحنی نظم بزیه بالاتر از دو ممکن است خودش را قطع کند یا برای برخی از گزینههای کنترل نقاط قعر باشد.
منحنی مرتبه دوم یک بخش سهمی است
منحنی درجه دوم بزیه نیز بخشی از یک سهمی است. از آنجا که سهمی یک بخش مخروطی است، برخی منابع از بزیههای درجه دوم به عنوان «قوسهای مخروطی» یاد میکنند.[۵] با اشاره به شکل سمت راست، ویژگیهای مهم سهمی را میتوان به شرح زیر به دست آورد:[۶]
مماسهای سهمی در نقاط انتهایی منحنی (A و B) در نقطه کنترل آن (C) تلاقی میکنند.
اگر D نقطه میانی AB باشد، مماس منحنی عمود بر CD (خط فیروزه ای خط دار) راس آن را تعریف میکند (V). محور تقارن آن (خط فیروزه ای) از V عبور میکند و عمود بر مماس است.
E یا نقطه ای از منحنی با مماس در ۴۵ درجه به CD (سبز تیره) است. اگر G محل تلاقی این مماس و محور باشد، خط عبوری از G و عمود بر CD، دایرکتریکس (سبز جامد) است.
کانون (F) در تقاطع محور و خطی است که از E عبور میکند و عمود بر CD است (زرد نقطه دار). راست روده (Latus rectum) قطعه خط درون منحنی (زرد جامد) است.
مشتق
مشتق منحنی سفارش n است
ساخت منحنیهای بزیه
منحنیهای خطی
t در تابع را برای یک منحنی خطی بزیه میتوان تصور کرد که فاصله B (t) از P0 به P1 چیست. به عنوان مثال، وقتی t = ۰٫۲۵، B (t) یک چهارم راه از نقطه P0 به P1 است. از آنجا که t از ۰ تا ۱ متغیر است، B (t) یک خط مستقیم از P0 به P1 را توصیف میکند.
منحنی درجه دوم
برای منحنیهای درجه دوم بزی میتوان نقاط میانی Q0 و Q1 را طوری ساخت که t از ۰ تا ۱ متغیر باشد:
نقطه از P0 تا P1 متغیر است و یک منحنی خطی بزیه را توصیف میکند.
نقطه از P1 تا P2 متفاوت است و منحنی خطی بزیه را توصیف میکند.
نقطه B (t) بین تا به صورت خطی درون یابی میشود و منحنی درجه دوم بزیه را توصیف میکند.
منحنیهای مرتبه بالاتر
برای منحنیهای مرتبه بالاتر شخص به نقاط میانی بیشتری احتیاج دارد. برای منحنیهای مکعبی میتوان نقاط میانی Q0، Q1 و Q2 را که منحنیهای خطی بزیه را توصیف میکند و نقاط R0 & R1 را که منحنیهای درجه دوم بزیه را توصیف میکنند، ساخت:
برای منحنیهای مرتبه چهارم میتوان نقاط میانی Q0، Q1، Q2 و Q3 را ساخت که منحنیهای خطی بزیه، نقاط R0، R1 و R2 را توصیف میکند که منحنیهای درجه دوم بزیه و نقاط S0 & S1 را توصیف میکند. منحنیهای بزیه مکعبی را توصیف کنید:
برای منحنیهای مرتبه پنجم، میتوان نقاط میانی مشابهی را ساخت.
این نمایشها متکی بر فرایند مورد استفاده در الگوریتم De Casteljau برای محاسبه منحنیهای بزیه است.[۷]
جبران کردن (معروف به نوازش) منحنیهای بزیه
منحنی در یک جابجایی ثابت از یک منحنی بزیه داده نمیشود، که در ریاضیات منحنی افست یا موازی نامیده میشود ("موازی" با منحنی اصلی قرار دارد، مانند جابجایی بین ریلها در یک مسیر راهآهن)، دقیقاً توسط یک منحنی بزیه تشکیل نمیشود (به جز در برخی موارد پیش پا افتاده). بهطور کلی، منحنی انحراف دو طرفه بزیه مکعب یک منحنی جبری مرتبه ۱۰ است[۸] و بهطور کلی برای یک بزیه درجه n منحنی انحراف دو طرفه یک منحنی جبری درجه ۴ ، است.[۹] با این حال، روشهای ابتکاری وجود دارد که معمولاً تقریب مناسبی را برای اهداف عملی ارائه میدهند.[۱۰]
در زمینه گرافیک برداری، به رنگ آمیزی دو منحنی افست با تقارن متقارن نوازش گفته میشود (منحنی بزیه یا بهطور کلی مسیری از چندین بخش بزیه).[۱۱] تبدیل از منحنیهای افست به خطوط پر شده بزیه از اهمیت عملی در تبدیل فونتهای تعریف شده در Metafont است که اجازه میدهد تا منحنیهای بزیه را به فونتهای نوع 1 PostScript که بهطور گسترده استفاده میشود، تبدیل کنید. پر کردن یک کانتور مشخص شده توسط منحنیهای بزیه (غیر خود تلاقی).[۱۲]
ارتفاع درجه
منحنی بزیه از درجه n میتواند به منحنی بزیه از درجه n+1 با همان شکل تبدیل شود. این در صورتی مفید است که نرمافزار منحنیهای بزیه را فقط در درجه خاص پشتیبانی کند. به عنوان مثال، سیستمهایی که فقط میتوانند با منحنیهای مکعبی مکعبی کار کنند، میتوانند با استفاده از نمایش مکعب معادل آنها، بهطور ضمنی با منحنیهای درجه دوم کار کنند.
برای انجام ارتفاع درجه، از برابری استفاده میکنیم . هر مولفه ضرب در (1 − t) میشود و t، بنابراین یک درجه بدون تغییر مقدار افزایش مییابد. در اینجا مثالی برای افزایش درجه از ۲ به ۳:
مفهوم ارتفاع درجه را میتوان بر روی چند ضلعی کنترل R تکرار کرد تا توالی چند ضلعیهای کنترل R , R1، R2 و غیره به دست آید. بعد از افزایش درجه r، چند ضلعی Rr دارای رئوس P0، r، P1، r، P2، r، است. . ، Pn + r، r داده شده توسط[۱۴]
همچنین میتوان نشان داد که برای منحنی بزیه زیرین B ,
منحنیهای بزیه منطقی
منحنی بیزیر منطقی وزنی قابل تنظیم برای ایجاد تقریب نزدیک به اشکال دلخواه اضافه میکند. عدد یک منحنی وزنی شکل بزیه به شکل برنشتاین است و مخرج یک مجموع وزنی از چند جملههای برنشتاین است. از منحنیهای منطقی بزیه، در میان سایر کاربردها، میتوان برای نمایش دقیق بخشهای مخروطی، از جمله قوسهای دایره ای استفاده کرد.[۱۵]
با توجه به نقاط کنترل Pi، منحنی بزیه منطقی را میتوان با شرح زیر توصیف کرد:
یا به سادگی
این عبارت را میتوان با استفاده از سیستمهای عددی علاوه بر واقعی برای اوزان، گسترش داد. در صفحه پیچیده، نقاط {۱}، {-۱} و {۱} با وزن { }، {۱} و { } یک دایره کامل با شعاع یک ایجاد کنید. برای منحنیهای دارای نقطه و وزن روی یک دایره، وزنها را میتوان بدون تغییر شکل منحنی مقیاس بندی کرد.[۱۶] مقیاس گذاری وزن مرکزی منحنی فوق توسط ۱٫۳۵۵۰۸، پارامتر سازی یکنواخت تری را به دست میدهد.
برنامههای کاربردی
گرافیک کامپیوتری
منحنیهای بزیه بهطور گستردهای در گرافیک کامپیوتر برای مدلسازی منحنیهای صاف استفاده میشود.از آنجایی که منحنی به طور کامل در بدنه محدب
(پوسته محدب) نقاط کنترل آن قرار دارد ، می توان نقاط را به صورت گرافیکی نمایش داد و برای دستکاری منحنی به طور مستقیم استفاده کرد. با اعمال تبدیل مربوطه بر روی نقاط کنترل منحنی می توان تبدیلات آفین مانند انتقال (هندسه) و چرخش را روی منحنی اعمال کرد.
منحنیهای درجه دوم و مکعب بزیه بیشترین شیوع را دارند. منحنیهای درجه بالاتر برای ارزیابی از نظر محاسباتی گران ترند. در صورت نیاز به اشکال پیچیدهتر، منحنیهای کمنظیر بزیه به هم وصل میشوند و یک منحنی بزیه مرکب تولید میکنند. از منحنی ترکیبی بزیه معمولاً به عنوان «مسیر» در زبانهای گرافیکی برداری (مانند PostScript)، استانداردهای گرافیکی برداری (مانند SVG) و برنامههای گرافیکی برداری (مانند Artline، Timeworks Publisher، Adobe Illustrator، CorelDraw، Inkscape و Allegro) یاد میشود. . به منظور پیوستن منحنیهای بزیه به یک منحنی ترکیبی بزیه و بدون انحراف، خاصیتی به نام G1 مداوم، کافی است که نقطه کنترل
ی را که در آن دو منحنی تشکیل دهنده بزیه به هم میرسند، مجبور کنیم در روی خط مشخص شده توسط دو نقطه کنترل در دو طرف قرار بگیریم.
سادهترین روش برای تبدیل اسکن (تصادفی سازی) منحنی بزیه ارزیابی آن در بسیاری از نقاط با فاصله نزدیک و اسکن تبدیل توالی تقریبی بخشهای خط است. با این حال، این تضمین نمیکند که خروجی تصادفی شده به اندازه کافی صاف به نظر میرسد، زیرا ممکن است نقاط از یکدیگر بسیار دور باشند. برعکس ممکن است در مناطقی که منحنی نزدیک به خطی است، نقاط زیادی ایجاد کند. یک روش تطبیقی معمول، تقسیم بازگشتی است که در آن نقاط کنترل یک منحنی بررسی میشود تا ببیند که آیا منحنی به یک خط مستقیم نزدیک به یک تحمل کوچک است. در غیر این صورت، منحنی از نظر پارامتری به دو بخش و تقسیم میشود و روش مشابه بهطور بازگشتی برای هر نیمه اعمال میشود. روشهای متمایزسازی به جلو نیز وجود دارد، اما باید برای تجزیه و تحلیل انتشار خطا بسیار دقت شود.[۱۸]
روشهای تحلیلی که یک بزیه با هر خط اسکن قطع میشود شامل یافتن ریشههای چند جمله ای مکعبی (برای بزیههای مکعبی) و مقابله با چندین ریشه است، بنابراین آنها در عمل اغلب استفاده نمیشوند.[۱۹]
الگوریتم rasterisation مورد استفاده در Metafont مبتنی بر تشخیص منحنی است، به طوری که با دنباله ای از "حرکتهای rook " که کاملاً عمودی یا کاملاً افقی هستند، در امتداد مرزهای پیکسل تقریب مییابد. بدین منظور، هواپیما ابتدا به هشت بخش ۴۵ درجه تقسیم میشود (توسط محورهای مختصات و دو خط )، سپس منحنی به بخشهای کوچکتر تجزیه میشود، به طوری که جهت یک بخش منحنی در یک بخش باقی میماند. از آنجا که سرعت منحنی یک چند جمله ای درجه دو است، پیدا کردن مقادیری که موازی یکی از این خطوط باشد را میتوان با حل معادلات درجه دوم انجام داد. در هر بخش، حرکت افقی یا عمودی غالب است و تعداد کل مراحل در هر جهت را میتوان از مختصات نقطه انتهایی خواند. برای مثال حرکت افقی بخش ۰–۴۵ درجه به سمت راست غالب است، بنابراین فقط باید تصمیم بگیرید که بین کدام پلهها به سمت راست منحنی باید یک پله بالا برود.[۲۰]
انیمیشن
در برنامههای انیمیشن سازی، مانند Adobe Flash و Synfig، از منحنیهای بزیه برای طرح کلی، به عنوان مثال حرکت، استفاده میشود. کاربران مسیر مورد نظر را در منحنیهای بزیه ترسیم میکنند، و برنامه قابهای لازم را برای حرکت جسم در طول مسیر ایجاد میکند.[۲۱][۲۲]
در انیمیشن سه بعدی، منحنیهای بزیه اغلب برای تعریف مسیرهای سه بعدی و همچنین منحنیهای دو بعدی برای درهم آمیختن فریم کلیدی استفاده میشوند.[۲۳] منحنیهای بزیه اکنون بهطور مداوم برای کنترل کاهش انیمیشن در CSS، JavaScript و JavaFx استفاده میشود.
قلمها
قلمهای TrueType از منحنیهای بزیه مرکب متشکل از منحنیهای درجه دوم بزیه استفاده میکنند. زبانهای دیگر و ابزارهای تصویربرداری (مانند PostScript، Asymptote، Metafont و SVG) از بزیه مرکب متشکل از منحنیهای بزیه مکعب برای ترسیم اشکال منحنی استفاده میکنند. بسته به طعم قلم، قلمهای OpenType میتوانند از هر دو نوع استفاده کنند.[۲۴]
رندر داخلی تمام منحنیهای بزیه در رندرهای فونت یا گرافیک برداری، آنها را به صورت بازگشتی تقسیم میکند تا جایی که منحنی به اندازه کافی مسطح باشد تا به صورت مجموعه ای از بخشهای خطی یا دایره ای ترسیم شود. الگوریتم تقسیم دقیق به اجرا وابسته است، فقط معیارهای مسطح بودن باید رعایت شود تا به دقت لازم برسد و از تغییر موضع منحنی غیر یکنواخت جلوگیری کند. ویژگی «منحنی روان» نمودارها در Microsoft Excel نیز از این الگوریتم استفاده میکند.[۲۵]
از آنجا که قوس دایرهها و بیضیها را نمیتوان دقیقاً توسط منحنیهای بزیه نشان داد، ابتدا با منحنیهای بزیه تقریب میشوند که به نوبه خود با قوسهای دایرهها تقریب میشوند. این ناکارآمد است زیرا تقریبهای منحنی بزیه با استفاده از کمانهای دایره یا بیضی نیز وجود دارد، که میتواند با دقت دلخواه به صورت تدریجی ارائه شود. رویکرد دیگری که توسط آداپتورهای گرافیکی سختافزاری مدرن با هندسه شتابدهنده استفاده میشود، میتواند دقیقاً تمام منحنیهای بزیه و مخروطی (یا سطوح) را به NURBS تبدیل کند، که میتواند بدون تقسیم منحنی به صورت بازگشتی به صورت افزایشی ارائه شود تا به شرایط مسطح لازم برسد. این روش همچنین اجازه میدهد تا تعریف منحنی را تحت همه تبدیلها و پیشبینیهای 2D و 3D خطی یا پرسپکتیو حفظ کنیم.
موتورهای قلم، مانند FreeType، منحنیهای قلم (و خطوط) را با استفاده از فرایندی که به عنوان rasterization قلم شناختهمیشود، روی یک سطح پیکسلی ترسیم میکنند.[۲۶]
↑Alexander Reshetov and David Luebke, Phantom Ray-Hair Intersector. In Proceedings of the ACM on Computer Graphics and Interactive Techniques (August 1, 2018).
↑"The difference between CFF and TTF". Know How. Linotype. Archived from the original on 2017-07-03. Retrieved 3 July 2018. The OpenType format was formulated in 1996. By 2003, it began to replace two competing formats: the Type1 fonts, developed by Adobe and based on [P]ost[S]cript, and the TrueType fonts, specified by Microsoft and Apple. (...) TTF stands for TrueTypeFont and indicates that the font data is the same as in the TrueType fonts. CFF stands for the Type1 font format. Strictly speaking, it refers to the Compact Font Format, which is used in the compression processes for the Type2 fonts. (...) the cubic Bézier format of the Type1 fonts is more space-saving compared to the quadratic format of the TrueType fonts. Some kilobytes can be saved in large, elaborate fonts, which may represent an advantage on the Web. On the other hand, the more detailed hinting information of the TrueType fonts allows very extensive optimization for screen use.