د SDF فونټونو لپاره لارښود لیکل | Mewayz Blog Skip to main content
Hacker News

د SDF فونټونو لپاره لارښود لیکل

تبصرې

2 min read Via www.redblobgames.com

Mewayz Team

Editorial Team

Hacker News

ولې د فونټ رینډرنګ لاهم ستاسو له فکر څخه ډیر مهم دی

ستاسو په سکرین کې هر پکسل یوه کیسه بیانوي، او هیڅ ځای یې د وسیلو، ریزولوشنونو، او زوم کچې په اوږدو کې د متن وړاندې کولو په پرتله ډیر څرګند ندی. دودیز بټ میپ فونټونو موږ ته د ثابت ریزولوشن مانیټرونو په دوره کې ښه خدمت وکړ ، مګر د لوړ DPI ښودنې ، ځواب ویونکي انٹرفیسونو ، او ریښتیني وخت 3D غوښتنلیکونو چاودنې د دوی بنسټیز محدودیتونه افشا کړل. د لاسلیک شوي فاصلې ساحه (SDF) فونټونه دننه کړئ - د رینډینګ تخنیک چې په خاموشۍ سره یې انقلاب راوستی دی چې څنګه عصري غوښتنلیکونه کرکرا، د توزیع وړ متن ښکاره کوي پرته له دې چې د حافظې غوړیدل یا د فعالیت قرباني کړي.

که تاسو د لوبې UI، د ډیټا ډشبورډ، یا د پیرودونکي سره مخامخ پلیټ فارم جوړ کړئ چې اړتیا لري د سمارټ واچ څخه تر 4K مانیټر پورې هر څه ته ریزر ګړندی وګوري، د SDF فونټونو پوهیدل تاسو ته جدي تخنیکي برخه درکوي. دا لارښود د لومړي اصولو مفهوم ماتوي، د نسل پایپ لاین څخه تیریږي، او ستاسو په پروژو کې د SDF فونټونو ادغام لپاره عملي مشوره وړاندې کوي.

په حقیقت کې د لاسلیک شوي واټن ساحه څه ده؟

د لاسلیک شوي فاصلې ساحه یو دوه اړخیز جوړښت دی چیرې چې هر پکسل فاصله له دې نقطې څخه د ګالیف خاکې نږدې څنډې ته ذخیره کوي. د "لاسلیک شوي" برخه مهمه ده: د ګلیف حدود دننه پکسلز مثبت ارزښتونه ذخیره کوي، پداسې حال کې چې پکسلونه بهر منفي ارزښتونه ذخیره کوي (یا برعکس، د کنوانسیون پورې اړه لري). سرحد پخپله په صفر کراس کې ناست دی. دا ساده ریاضیاتي نمایش د شکل معلوماتو غیر معمولي مقدار په یو کمپیکٹ خړ سکیل عکس کې کوډ کوي.

دا تخنیک د والو د 2007 SIGGRAPH کاغذ لخوا مشهور شو، چیرې چې کریس ګرین وښودله چې د 64x64 پکسلز په څیر کوچني SDF جوړښت کولی شي متن تولید کړي چې په خورا لویوالي کې تیز پاتې کیږي - پایلې چې د دودیز راسټریزیشن سره ترلاسه کولو لپاره 4096x4096 بټ میپ ته اړتیا لري. کلیدي بصیرت دا دی چې د GPU جوړ شوی بلینر انټرپولیشن، کوم چې په منظم بټ میپ فونټونو کې تیاره پایلې تولیدوي، په حقیقت کې د SDF جوړښتونو کې اسانه او دقیق واټن انټرپولیشن تولیدوي.

په عملي شرایطو کې، یو واحد SDF فونټ اتلس - په عموم ډول 512x512 یا 1024x1024 پکسلز - کولی شي د بشپړ کرکټر سیټ ولري چې په حقیقت کې په هره اندازه کې په پاک ډول وړاندې کوي. دا د بټ میپ فونټ طریقو سره پرتله کړئ، کوم چې د هر فونټ اندازې (16px، 24px، 32px، 48px، او داسې نورو) لپاره جلا جوړښت اټلیس ته اړتیا لري، په چټکۍ سره د یو واحد ټایپفیس لپاره د میګابایټ جوړښت حافظه مصرفوي.

د SDF فونټ اتلسونه څنګه جوړیږي

د نسل پایپ لاین د ویکتور فونټ فایل (TTF یا OTF) سره پیل کیږي او د جوړښت اتلس او د میټاډاټا فایل تولیدوي چې د هر ګلیف موقعیت ، اندازه او میټریک بیانوي. د خلاصې سرچینې ډیری وسیلې دا پروسه اداره کوي ، د msdf-atlas-gen سره، Hiero (د libGDX برخه)، او msdfgen په پراخه کچه کارول کیږي. په دې پروسه کې د هر ګلیف په لوړ ریزولوشن کې راسټریز کول شامل دي، د الګوریتمونو په کارولو سره د فاصلې ساحه محاسبه کول لکه د 8-پوائنټ ترتیب شوي Euclidean فاصله بدلون (8SSEDT)، او بیا پایلې په یو واحد جوړښت کې بسته کول شامل دي.

د SDF درې اصلي ډولونه شتون لري چې تاسو باید پوه شئ:

  • معیاري SDF (واحد چینل): په هر پکسل کې د یو فاصله ارزښت ذخیره کوي. نرم منحني تولیدوي مګر د تیزو کونجونو سره مبارزه کوي، کوم چې په ټیټ ریزولوشنونو کې ګردیږي. د بدن متن او حالتونو لپاره غوره چیرې چې د کونج نرم کول د منلو وړ وي.
  • ملټي چینل SDF (MSDF): د مختلفو څنډو برخو څخه د فاصلې معلوماتو کوډ کولو لپاره درې رنګ چینلونه (RGB) کاروي. دا تیز کونجونه او ښه توضیحات د واحد چینل SDF څخه خورا ښه ساتي ، دا د ډیری عصري غوښتنلیکونو لپاره غوره انتخاب جوړوي. د ویکتور چلمسکي لخوا رامینځته شوی، MSDF په حقیقت کې معیاري شوی دی.
  • ملټي چینل + ریښتیني SDF (MTSDF): څلورم الفا چینل اضافه کوي چې د دریو MSDF چینلونو تر څنګ د ریښتیني فاصلې ساحه لري. دا د دواړو نړۍ غوره - د MSDF څخه تیز کونجونه او د ریښتیني SDF اغیزو لپاره دقیق فاصله معلومات چمتو کوي - د لږ لوی جوړښت په قیمت.

د msdf-atlas-gen په کارولو سره د عام نسل کمانډ ممکن د فونټ اندازه 42 پکسله، د 4 پکسلونو فاصله، او د جوړښت اندازه 1024x1024 مشخص کړي. د فاصلې رینج پیرامیټر کنټرولوي چې د ګلیف څنډې څخه د فاصلې معلومات څومره لرې پراخیږي، کوم چې په مستقیم ډول د نقشو، سیوري، او ګلو اغیزو اعظمي کیفیت اغیزه کوي چې تاسو یې د چلولو په وخت کې پلي کولی شئ.

د ټوټې شیډر: چیرته چې جادو پیښیږي

د SDF فونټونو رینډینګ اړخ په زړه پوری ساده دی. ستاسو په ټوټه شیډر کې، تاسو د SDF جوړښت نمونه کړئ، د یو حد په مقابل کې د فاصلې ارزښت پرتله کړئ (په عموم ډول د ګلیف څنډه لپاره 0.5)، او د لیږد ضد انټیالیز لپاره یو نرم فعالیت وکاروئ. په GLSL کې اصلي منطق یو څه داسې ښکاري: د دریو MSDF چینلونو منځنی نمونه، د مناسب انټیالیز کولو لپاره د سکرین-فصل فاصله ګریډینټ محاسبه کړئ، بیا د وروستي الفا ارزښت تولیدولو لپاره د اسانه سټیپ فعالیت پلي کړئ.

د SDF فونټونو اصلي ځواک نه یوازې د ریزولوشن په خپلواکۍ کې دی ، بلکه د تاثیراتو اضافه کولو لږ لګښت کې دی. آوټ لائنونه، ډراپ سیوري، داخلي چمکونه، او حتی 3D بیولونه ټول په ورته شیډر پاس کې په ساده ډول د مختلف فاصلو حدونو په مقابل کې د ازموینې له لارې محاسبه کیدی شي — هیڅ اضافي جوړښت ، هیڅ اضافي ډراو کالونه ، د پری بیک شوي اغیزې پرتونه.

د اساسي نقشې اغیزې لپاره، تاسو دوه حدونه ازموئ: یو د نقشې د بهرنۍ څنډې لپاره او بل د داخلي ډکولو لپاره. پکسلز چې د دې حدونو تر مینځ راوتلی د خاکي رنګ ترلاسه کوي؛ پکسلز دننه ډک رنګ ترلاسه کوي. ډراپ شیډونه په ورته ډول کار کوي - د نمونې اخیستو دمخه د جوړښت همغږي بند کړئ ، پراخه نرمه لړۍ پلي کړئ ، او سیوري د اصلي ګلیف شاته ترکیب کړئ. دا عملیات د نه منلو وړ GPU لګښت اضافه کوي ځکه چې دا د دمخه نمونې شوي فاصلې ارزښت باندې خالص حسابي عملیات دي.

د سکرین ځای انټیالیز کول د ځانګړې پاملرنې وړ دي. یو ساده پلي کول یو ثابت همغږي پلنوالی کاروي، کوم چې متن تولیدوي چې په یوه اندازه کې خورا ښه ښکاري مګر یا ډیر تیاره یا په نورو کې ډیر خړ وي. سمه طریقه د فاصلې ساحې د سکرین - ځای مشتقاتو څخه همغږي چوکۍ محاسبه کوي (په GLSL کې fwidth() یا ddx/ddy په HLSL کې کارول). دا په اوتومات ډول د اوسني رینډر اندازې سره د انټيالیز کولو سره تطابق کوي، پرته له دې چې د زوم کچه یا د لیدلو فاصله په پام کې نیولو سره په دوامداره توګه کرکرا کنډکونه تولید کړي.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

عام زیانونه او څنګه یې مخنیوی وشي

د دوی د ښکلا سره سره، SDF فونټونه د ګوتو سره راځي چې حتی تجربه لرونکي پراختیا کونکي هم سفر کولی شي. ترټولو عام مسله د اطلس نسل په جریان کې ناکافي فاصله ده. که د فاصلې حد ډیر تنګ وي، اغیزې لکه ضخامت یا لوی سیوري به په ناڅاپي ډول د کوډ شوي حد په څنډه کې کلیک وکړي. د ګوتو یو ښه قاعده دا ده چې د فاصلې رینج لږترلږه دوه ځله د اعظمي تاثیر وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ وړ نه وي چې تاسو یې د کارولو پلان لرئ، په اتلس پکسلز کې اندازه کیږي.

بله پرله پسې ستونزه د جوړښت فلټر کول دي. د SDF جوړښتونه باید د بیلینیر فلټر کولو څخه کار واخلي - د نږدې ګاونډی فلټر کول هغه انټرپولیشن له مینځه وړي چې تخنیک کار کوي، بلاکي، عرفي متن تولیدوي. په هرصورت، تاسو باید د SDF اتلسونو لپاره د میپ میپینګ غیر فعال کړئ، ځکه چې د میپ میپ شوي فاصلې ساحې په ټیټ میپ کچو کې ناسمې پایلې تولیدوي چیرې چې د لیرې ګلیف څنډې یو بل ته وینې ورکولی شي.

کرنینګ او د متن ترتیب هم هغه سیمې دي چیرې چې پراختیا کونکي ډیری وختونه کونجونه پرې کوي. د SDF اتلس رینډرینګ اداره کوي ، مګر د متن مناسب شکل - د کرکټر فاصله ، د کرینګ جوړه ، د کرښې لوړوالی ، او دوه اړخیز متن - لاهم د ترتیب انجن ته اړتیا لري. کتابتونونه لکه HarfBuzz or FreeType دا په سمه توګه اداره کوي. د ساده ټاکل شوي چوکۍ فاصلې په ګټه د متن سم شکل پریښودل یوازینۍ ګړندۍ لار ده چې ستاسو د متن رینډرینګ شوقي ښکاري ، پرته لدې چې ستاسو د SDF پلي کول څومره پاک وي.

  1. په سخاوتمندانه ریزولوشن کې تولید کړئ. پداسې حال کې چې د SDF فونټونه په ښکلي ډول ښکته کیږي، په اتلس کې د لږ تر لږه 32-48 پکسلز د ګلیف اندازې سره پیل کول په پیچلي ګلیفونو لکه CJK کرکټرونو یا آرائشی سکریپټونو کې ښه توضیحات ساتي.
  2. د واحد چینل SDF باندې MSDF وکاروئ پرته لدې چې تاسو د نه کولو ځانګړي دلیل ولرئ. د کونج دقت ښه والی د نه منلو وړ سر سره ډراماتیک دی.
  3. په ډیره اندازه ازموینه وکړئ. خپل متن د پراختیا پرمهال په 8px او 200px کې وړاندې کړئ هغه مسلې چې په نورمال اندازې کې نه لیدل کیږي په انتها کې څرګندیږي.
  4. د پروفایل جوړښت حافظه. یو واحد 1024x1024 MSDF اتلس (RGB، 8-bit) د GPU حافظه 3 MB مصرفوي. دا عموما د مساوي کیفیت سره د دوه بټ میپ فونټ سایز څخه کم وي.
  5. په CPU کې د ګالیف کواډونو څخه مخکې محاسبه کول. د عمودی بفر چې موقعیت لرونکي ګالیف کواډونه لري یوازې هغه وخت بدلیږي کله چې د متن مینځپانګه بدلیږي ، نه هر چوکاټ. دا په چټکۍ سره زیرمه کړئ.

په تولید کې د SDF فونټونه: د ریښتیني نړۍ غوښتنلیکونه

د لوبې انجنونو د SDF فونټونو د غوره کولو مشري وکړه، مګر دا تخنیک د لوبو څخه ډیر خپور شوی. Google Maps د خپل نقشې پوښښ لپاره د SDF لخوا وړاندې شوي لیبلونه کاروي، د ځای نومونو ته اجازه ورکوي چې د سړک په سطحه زوم څخه د براعظم کچې زوم ته د بیا راسټر کولو پرته د لوست وړ پاتې شي. Mapbox GL د خپل WebGL لخوا چمتو شوي نقشو لپاره په بشپړ ډول په SDF ګلیفونو تکیه کوي، د خپل CDN څخه د مخکې څخه تولید شوي SDF اتلس ټایلونو خدمت کوي. په دواړو حالتونو کې، د SDF فونټونو ریزولوشن خپلواکي د زوم کچې رینډرینګ بګز ټول ټولګي له منځه وړي.

د سوداګرۍ غوښتنلیکونه په مساوي توګه ګټه پورته کوي. هر هغه پلیټ فارم چې متحرک متن په کینوس یا WebGL شرایطو کې وړاندې کوي - فکر وکړئ ډشبورډونه، ډیټا لیدونه، متقابل راپورونه، یا ډیجیټل لاسلیک - د SDF رینډینګ څخه سمدستي ګټې ترلاسه کوي. په میویز کې، چیرې چې سوداګرۍ په 207 مدغم ماډلونو کې د رسیدو څخه تر تحلیل پورې هرڅه اداره کوي، په ټولو وسیلو کې ثابت او فعال متن وړاندې کول عیش و آرام نه دی - دا یوه اړتیا ده. کله چې د رستورانت مالک په تلیفون کې د دوی د بکینګ ډشبورډ چیک کوي او د دوی حساب ورکوونکي ورته ډیټا په 32 انچ مانیټر کې بیاکتنه کوي، متن باید د هرې سکرین کثافت لپاره د جلا فونټ اثاثو لیږدولو پرته په مساوي ډول د منلو وړ وي.

د WebGL ایکوسیستم د SDF فونټونه د ویب پراختیا کونکو لپاره په زیاتیدونکي توګه د لاسرسي وړ کړي دي. کتابتونونه لکه درې میش-ui او ټریکا-درې متن د Three.js صحنو لپاره د MSDF متن رینډرینګ چمتو کوي، پداسې حال کې چې د ټیټې کچې پراختیا کونکي کولی شي د 100 څخه لږ د شیډر کوډونو سره دودیز SDF رینډرینګ پلي کړي. دا تخنیک د فلټر په څیر د چوکاټونو له لارې د ګرځنده ګرځنده پراختیا ته هم لاره موندلې، کوم چې د خپل دودیز متن انجن لپاره د SDF-based رینډینګ کاروي.

د متن څخه هاخوا: چیرته چې د SDF تخنیکونه روان دي

د فاصلې ساحه مفکوره د فونټ رینډینګ هاخوا پراخه ده. د UI ډیزاینران د SDF تخنیکونه کاروي ترڅو د ریزولوشن خپلواک عکسونه رامینځته کړي ، د توزیع وړ ویکتور شکلونه ، او حتی پروسیجري UI عناصر لکه د پکسل کامل کونجونو سره ګردي مستطیلونه. د اطلس پر بنسټ ورته طریقه چې د SDF فونټ حافظه موثره کوي په مساوي ډول د آئیکون سیټونو لپاره پلي کیږي — یو واحد 512x512 SDF اتلس کولی شي په سلګونو عکسونه ولري چې په هر انداز کې په بشپړ ډول وړاندې کوي.

د څیړنې په سرحد کې، د عصبي شبکې پر بنسټ تګلارې رامینځته کیږي چې د ویکټور لینونو څخه په مستقیم ډول د فاصلې ساحې رامینځته کول زده کوي، په بالقوه توګه د دودیزو الګوریتمیک میتودونو په پرتله د لوړ کیفیت پایلې تولیدوي. په عین حال کې، د SDF جوړښتونو په کارولو سره د متغیر-چوپۍ سټروک رینډینګ د خطاطي او لاسي لیکل شوي متن اغیزو لپاره نوي امکانات پرانیزي چې پخوا په ریښتیني وخت غوښتنلیکونو کې غیر عملي وو.

د پرمختلونکو لپاره چې عصري، څو پلیټ فارم غوښتنلیکونه جوړوي، د SDF فونټونه یو له هغو نادر تخنیکونو څخه استازیتوب کوي چیرې چې د زده کړې پانګه اچونه په حقیقت کې په هره پروژه کې ګټه ورکوي. د رینډینګ کیفیت د اصلي متن انجنونو سره سیالي کوي، د حافظې فوټپرنټ د بټ میپ بدیلونو یوه برخه ده، او د شیډر پر بنسټ د تاثیر سیسټم تخلیقي انعطاف چمتو کوي چې مخکې پخه شوي طریقې په ساده ډول سره سمون نه خوري. که تاسو په 3D نړۍ کې لیبلونه وړاندې کوئ یا ډاډ ترلاسه کړئ چې د سوداګرۍ مهم معلومات ستاسو د کاروونکو په ژوند کې په هر سکرین کې په سمه توګه ښکاره کیږي، د SDF فونټونه د مهارت وړ وسیله ده.

په مکرر ډول پوښتل شوي پوښتنې

SDF فونټونه څه دي او ولې پراختیا کونکي باید د دوی پاملرنه وکړي؟

د لاسلیک شوي فاصلې فیلډ فونټونه د فاصلې ارزښتونه له هر پکسل څخه نږدې ګلیف څنډې ته ذخیره کوي، د ریزولوشن خپلواک متن رینډرینګ فعالوي. د دودیز بټ میپ فونټونو برخلاف چې د اندازې په وخت کې تیاره کیږي ، د SDF فونټونه په هره اندازه یا زوم کچه کرکرا پاتې کیږي. دا دوی د عصري ځواب ورکوونکي انٹرفیسونو، د لوبې UI، او هر هغه غوښتنلیک لپاره اړین کوي چې د ډیری سکرین کثافت په نښه کوي - له ګرځنده وسیلو څخه تر 4K مانیټرونو او هاخوا.

د SDF فونټونه څنګه د دودیز بټ میپ او ویکتور فونټ رینډرینګ سره پرتله کوي؟

د بټ میپ فونټونه د هرې اندازې لپاره جلا جوړښتونو ته اړتیا لري، د پام وړ حافظه مصرفوي پداسې حال کې چې د اندازې په وخت کې اثار تولیدوي. ویکتور فونټونه مناسب کیفیت وړاندیز کوي مګر په ریښتیني وخت کې د راسټریز کولو لپاره له کمپیوټري پلوه ګران دي. د SDF فونټونه یو مثالی توازن رامینځته کوي - یو واحد کمپیکٹ جوړښت په حقیقت کې په هره پیمانه کې د لږترلږه GPU سر سره په ښکلي ډول وړاندې کوي ، دا د ریښتیني وخت غوښتنلیکونو لکه لوبو او متقابل ډشبورډونو لپاره غوره انتخاب جوړوي.

د SDF فونټونو د جوړولو لپاره کوم وسایل او کتابتونونه شتون لري؟

مشهور انتخابونو کې د ملټي چینل SDF نسل لپاره msdfgen، د SDF ملاتړ سره د بټ میپ فونټ بسته کولو لپاره Hiero، او د خلاصې سرچینې مختلف کمانډ لاین اسانتیاوې شاملې دي. د لوبې ډیری انجنونه لکه یووالي او ګوډوټ د SDF متن ملاتړ کې جوړ شوی شامل دي. د سوداګرۍ لپاره چې دودیز غوښتنلیکونه جوړوي، پلیټ فارمونه لکه Mewayz د خپل 207 ماډل سوداګریز OS سره چې په $19/mo کې پیل کیږي کولی شي دا رینډینګ تخنیکونه په برانډ شوي ډیجیټل تجربو کې مدغم کړي.

ایا SDF فونټونه کولی شي ځانګړي اغیزې لکه خاکه، سیوري، او روښانه متن سمبال کړي؟

بلکل - دا د SDF فونټونو ترټولو لوی ځواک دی. ځکه چې د فاصلې ساحې ډیټا په شیډر کې شتون لري ، تاسو کولی شئ په ساده ډول د حد ارزښتونو تنظیم کولو سره خاکه ، ډراپ سیوري ، نرم چمکونه او حتی متحرک تاثیرات اضافه کړئ. دا اغیزې په فعالیت کې تقریبا هیڅ لګښت نلري ځکه چې دوی اضافي جیومیټري یا جوړښت پاسونو ته اړتیا نلري، ډیزاینرانو ته د چوکاټ نرخونو قرباني کولو پرته د پام وړ تخلیقي آزادي ورکوي.