Ekri yon Gid pou Polis SDF | Mewayz Blog Skip to main content
Hacker News

Ekri yon Gid pou Polis SDF

Kòmantè

15 min read Via www.redblobgames.com

Mewayz Team

Editorial Team

Hacker News

Poukisa rann polis toujou enpòtan plis pase w panse

Chak pixel sou ekran ou a rakonte yon istwa, e okenn kote pa pi evidan pase nan fason tèks rann atravè aparèy, rezolisyon, ak nivo zoom. Polis bitmap tradisyonèl yo te sèvi nou byen nan epòk monitè rezolisyon fiks yo, men eksplozyon ekspozisyon wo DPI, koòdone ki reponn ak aplikasyon 3D an tan reyèl te ekspoze limit fondamantal yo. Antre polices Signed Distance Field (SDF) — yon teknik rann ki te revolusyone tou dousman fason aplikasyon modèn yo montre tèks klè, san yo pa gonfle memwa oswa sakrifye pèfòmans.

Keswa w ap konstwi yon UI jwèt, yon tablodbò done, oswa yon platfòm ki fè fas ak kliyan ki bezwen gade byen file sou tout bagay, soti nan yon smartwatch ak yon monitè 4K, konprann polis SDF ba ou yon avantaj teknik serye. Gid sa a dekonpoze konsèp nan premye prensip, mache atravè tiyo jenerasyon an, epi li ofri konsèy pratik pou entegre polis SDF nan pwòp pwojè ou yo.

Ki sa egzakteman se yon jaden distans ki siyen?

Yon Siyen Distans Field se yon teksti ki genyen de dimansyon kote chak piksèl estoke distans ki soti nan pwen sa a rive nan kwen ki pi pre yon deskripsyon glif. Pati "siyen an" kritik: piksèl andedan fwontyè glif la magazen valè pozitif, pandan y ap piksèl deyò magazen valè negatif (oswa vis vèrsa, tou depann de konvansyon). Fwontyè nan tèt li chita nan travèse zewo a. Senp reprezantasyon matematik sa a kode yon kantite ekstraòdinè enfòmasyon fòm nan yon imaj kontra enfòmèl ant gri.

Teknik la te popilarize pa papye SIGGRAPH 2007 Valve, kote Chris Green te demontre ke teksti SDF osi piti ke 64x64 piksèl te kapab pwodwi tèks ki rete byen file nan agrandisman ekstrèm - rezilta ki ta mande yon bitmap 4096x4096 pou reyalize ak rasterizasyon tradisyonèl yo. Insight kle a se ke entèpolasyon bilineyè entegre GPU a, ki pwodui rezilta flou sou polis bitmap regilye, aktyèlman pwodui entèpolasyon distans lis ak egzat sou teksti SDF.

An tèm pratik, yon sèl atlas font SDF - anjeneral 512x512 oswa 1024x1024 piksèl - ka genyen yon seri karaktè antye ki rann pwòp nan prèske nenpòt gwosè. Konpare sa ak apwòch bitmap font, ki mande atlas teksti separe pou chak gwosè font (16px, 24px, 32px, 48px, ak sou sa), rapidman konsome megabyte memwa teksti pou yon sèl tip.

Kijan Atlas Polis SDF Yo Jenere

Pipeline jenerasyon an kòmanse ak yon fichye polis vektè (TTF oswa OTF) epi li pwodui yon atlas teksti ak yon fichye metadata ki dekri pozisyon, gwosè, ak mezi chak glif. Plizyè zouti louvri sous okipe pwosesis sa a, ak msdf-atlas-gen, Hiero(ki fè pati libGDX), ak msdfgenki pi lajman itilize. Pwosesis la enplike nan rasterize chak glif nan yon rezolisyon segondè, kalkile jaden distans la lè l sèvi avèk algoritm tankou transfòmasyon distans Euclidean sekans 8 pwen (8SSEDT), epi answit anbalaj rezilta yo nan yon teksti sèl.

Gen twa varyete prensipal SDF ou ta dwe konprann:

  • SDF estanda (yon sèl chanèl): Sere yon valè distans pou chak pixel. Pwodui koub lis men lite ak kwen byen file, ki gen tandans awondi nan rezolisyon ki pi ba yo. Pi bon pou tèks kò a ak sitiyasyon kote yon ti kras ralantisman kwen akseptab.
  • SDF milti-chanèl (MSDF): Itilize twa chanèl koulè (RGB) pou kode enfòmasyon sou distans ki soti nan diferan segman kwen. Sa a prezève kwen byen file ak bon detay byen lwen pi bon pase yon sèl-chanèl SDF, fè li chwa a pi pito pou aplikasyon pou pifò modèn. Devlope pa Viktor Chlumský, MSDF te vin estanda defakto a.
  • Multi-chanèl + True SDF (MTSDF): Ajoute yon katriyèm chanèl alfa ki gen yon jaden distans vre ansanm ak twa chanèl MSDF yo. Sa a bay pi bon nan tou de mond yo - kwen byen file soti nan MSDF ak enfòmasyon egzat distans pou efè soti nan SDF la vre - nan pri a nan tèkstur yon ti kras pi gwo.

Yon lòd jenerasyon tipik ki itilize msdf-atlas-gen ta ka presize yon gwosè font 42 piksèl, yon seri distans 4 piksèl, ak yon gwosè teksti 1024x1024. Paramèt ranje distans la kontwole ki distans enfòmasyon sou distans la pwolonje de kwen glif la, sa ki afekte dirèkteman kalite maksimòm kontour, lonbraj, ak efè lumineux ou ka aplike pandan w ap egzekite.

Fragman Shader la: Kote majik la rive

Kote rann polis SDF yo se yon bagay ki senp. Nan shader fragman ou a, ou echantiyon teksti SDF la, konpare valè distans la kont yon papòt (tipikman 0.5 pou kwen glif la), epi sèvi ak yon fonksyon atenuasyon pou antialias tranzisyon an. Lojik debaz la nan GLSL sanble yon bagay tankou sa a: echantiyon medyàn nan twa chanèl MSDF yo, kalkile gradyan distans ekran-espas la pou bon antialiasing, Lè sa a, aplike yon fonksyon smoothstep pou pwodwi valè alfa final la.

Vrè pouvwa polis SDF yo pa sèlman nan endepandans rezolisyon yo, men nan pri trivial pou ajoute efè. Ou ka kalkile deskripsyon yo, lonbraj gout, ekla enteryè, e menm bizo 3D yo nan menm pase lonbraj la lè w senpleman teste kont diferan papòt distans — pa gen okenn tèkstur adisyonèl, pa gen okenn apèl siplemantè, pa gen okenn kouch efè pre-kwit.

Pou yon efè debaz debaz, ou teste de papòt: youn pou kwen ekstèn nan deskripsyon an ak youn pou ranpli anndan an. Piksèl ki tonbe ant papòt sa yo jwenn koulè deskripsyon an; piksèl andedan jwenn koulè ranpli a. Drop lonbraj travay menm jan an - konpanse kowòdone teksti yo anvan pran echantiyon, aplike yon seri atenuasyon pi laj, ak konpoze lonbraj la dèyè glif prensipal la. Operasyon sa yo ajoute pri GPU neglijab paske yo se operasyon piman aritmetik sou valè distans ki deja echantiyon an.

Antialiasing espas ekran merite atansyon espesyal. Yon aplikasyon nayif sèvi ak yon lajè atenuasyon fiks, ki pwodui tèks ki sanble gwo nan yon gwosè men swa twò twoub oswa twò jaggy nan lòt moun. Apwòch ki kòrèk la kalkile lajè atenuasyon an soti nan dérivés ekran-espas nan jaden distans la (itilize fwidth()nan GLSL oswa ddx/ddynan HLSL). Sa a otomatikman adapte antialiasing a ak gwosè rann aktyèl la, sa ki pwodui kwen ki toujou klè kèlkeswa nivo zoom oswa distans gade.

💡 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 →

Enkonvenyans komen ak kijan pou evite yo

Malgre distenksyon yo, polis SDF yo vini ak gotchas ki ka trip menm devlopè ki gen eksperyans. Pwoblèm ki pi komen se ranje distans ensifizan pandan jenerasyon atlas. Si ranje distans la twò etwat, efè tankou deskripsyon epè oswa gwo lonbraj yo pral koupe bridsoukou nan kwen an nan seri a kode. Yon bon règ se pou fikse ranje distans nan omwen de fwa reyon efè maksimòm ou planifye pou itilize a, ki mezire an piksèl atlas.

Yon lòt pwoblèm souvan se filtraj teksti. Textures SDFdwesèvi ak filtrage bilinéaire — filtrage vwazen ki pi pre detwi entèpolasyon ki fè teknik travay, pwodwi blocky, alyas tèks. Sepandan, ou ta dwe dezaktive mipmapping pou atlas SDF, paske jaden distans mipmapped yo pwodui rezilta kòrèk nan nivo mip ki pi ba yo kote kwen glif byen lwen yo ka senyen youn nan lòt.

Kerning ak layout tèks yo tou se zòn kote devlopè yo souvan koupe kwen. Atlas SDF la okipe rann, men fòm tèks apwopriye - espas karaktè, pè kerning, wotè liy, ak tèks bidireksyon - toujou mande pou yon motè layout. Bibliyotèk tankou HarfBuzzoswa FreeType okipe sa kòrèkteman. Sote bon fòm tèks an favè senp espas fiks lajè se sèl fason ki pi rapid pou fè rann tèks ou parèt amatè, kèlkeswa fason aplikasyon SDF ou a pwòp.

  1. Jenere nan yon rezolisyon jenere. Pandan ke polis SDF diminye bèl, kòmanse ak yon gwosè glif nan omwen 32-48 piksèl nan atlas la konsève bon detay nan glif konplèks tankou karaktè CJK oswa scripts dekoratif.
  2. Sèvi ak MSDF sou yon sèl chanèl SDF sof si ou gen yon rezon espesifik pou pa fè sa. Amelyorasyon nan presizyon kwen se dramatik ak anlè neglijab.
  3. Tès nan gwosè ekstrèm. Rann tèks ou a nan 8px ak 200px pandan devlopman. Pwoblèm envizib nan gwosè nòmal vin evidan nan ekstrèm yo.
  4. Memwa teksti pwofil. Yon sèl atlas MSDF 1024x1024 (RGB, 8-bit) konsome 3 MB memwa GPU. Tipikman, sa se mwens pase de gwosè polis bitmap nan bon jan kalite ekivalan.
  5. Pre-kalkile kwadri glif sou CPU a. Tanpon somè ki gen kwadri glif pozisyone chanje sèlman lè kontni tèks la chanje, se pa chak ankadreman. Cache li agresif.

SDF Polis nan Pwodiksyon: Aplikasyon pou mond reyèl la

Motè jwèt yo te dirije adopsyon polis SDF, men teknik la gaye pi lwen pase jwèt. Google Maps itilize etikèt SDF rann pou kouvri kat li yo, sa ki pèmèt non kote yo rete lizib soti nan rale nan nivo lari a nan rale nan nivo kontinan san yo pa re-rasterize. Mapbox GL konte antyèman sou glif SDF pou kat yo rann WebGL yo, k ap sèvi mozayik atlas SDF ki te deja pwodwi nan CDN li yo. Nan tou de ka yo, rezolisyon endepandans polis SDF elimine yon klas antye de pinèz rann nivo zoom.

Aplikasyon pou biznis yo benefisye egalman. Nenpòt platfòm ki rann tèks dinamik nan yon kontèks twal oswa WebGL - panse tablodbò, vizyalizasyon done, rapò entèaktif, oswa siyal dijital - jwenn avantaj imedya nan rann SDF. Nan Mewayz, kote biznis jere tout bagay, soti nan fakti ak analiz atravè 207 modil entegre, rann tèks konsistan ak pèfòmans atravè aparèy se pa yon liks - li se yon kondisyon. Lè yon pwopriyetè restoran tcheke tablodbò rezèrvasyon yo sou yon telefòn epi kontab yo revize menm done yo sou yon monitè 32 pous, tèks la dwe egalman lizib san yo pa voye eleman diferan pou chak dansite ekran.

Ekosistèm WebGL la te rann polis SDF de pli zan pli aksesib pou devlopè entènèt yo. Bibliyotèk tankou three-mesh-uiak troika-three-text bay rann tèks MSDF drop-in pou sèn Three.js, pandan y ap devlopè ki pi ba yo ka aplike rann SDF koutim ak mwens pase 100 liy kòd shader. Teknik la te jwenn tou wout li nan devlopman mobil natif natal atravè kad tankou Flutter, ki itilize rann SDF ki baze sou pou motè tèks koutim li yo.

Apre tèks: Kote teknik SDF yo ap dirije

Konsèp jaden distans la pwolonje byen pi lwen pase rann font. Konsèpteur UI yo ap itilize teknik SDF pou kreye ikon rezolisyon endepandan, fòm vektè évolutif, e menm eleman UI pwosedi tankou rektang awondi ak kwen pixel-pafè. Menm apwòch ki baze sou atlas la ki fè polis SDF memwa efikas aplike egalman ak seri ikon yo — yon sèl atlas 512x512 SDF ka genyen plizyè santèn ikon ki rann pafètman nan nenpòt ki gwosè.

Sou fwontyè rechèch la, apwòch ki baze sou rezo neral ap parèt ki aprann jenere jaden distans dirèkteman nan desen vektè yo, ki kapab pwodui rezilta pi bon kalite pase metòd algoritmik tradisyonèl yo. Pandan se tan, rann konjesyon serebral lajè varyab lè l sèvi avèk teksti SDF ap louvri nouvo posiblite pou efè tèks kaligrafi ak ekri alamen ki te deja pratik nan aplikasyon an tan reyèl.

Pou devlopè ki kreye aplikasyon modèn, milti-platfòm, polis SDF reprezante youn nan teknik ki ra kote envestisman aprantisaj la peye dividann nan prèske chak pwojè. Kalite rannman an rival ak motè tèks natif natal yo, anprint memwa a se yon fraksyon nan altènativ bitmap, ak sistèm efè ki baze sou shader bay fleksibilite kreyatif ke apwòch pre-kwit tou senpleman pa ka matche. Kit w ap rann etikèt sou yon glòb 3D oswa asire w ke done ki enpòtan pou biznis yo montre kòrèkteman sou chak ekran nan lavi itilizatè ou yo, polis SDF yo se yon zouti ki merite metrize.

Kesyon yo poze souvan

Ki sa polis SDF yo ye e poukisa devlopè yo ta dwe pran swen yo?

Polis jaden Distans ki siyen yo estoke valè distans soti nan chak pixel rive nan kwen glif ki pi pre a, sa ki pèmèt rann tèks endepandan rezolisyon an. Kontrèman ak polis bitmap tradisyonèl yo ki vin twoub lè yo echèl, polis SDF rete klè nan nenpòt ki gwosè oswa nivo zoom. Sa fè yo esansyèl pou koòdone ki reponn modèn, UI jwèt, ak nenpòt aplikasyon ki vize plizyè dansite ekran — soti nan aparèy mobil ak monitè 4K ak pi lwen.

Kijan polis SDF yo konpare ak fòm bitmap tradisyonèl ak polis vektè?

Polis Bitmap mande pou teksti separe pou chak gwosè, konsome memwa enpòtan pandan y ap toujou pwodwi zafè lè yo echèl. Polis vektè yo ofri bon jan kalite pafè, men yo chè nan kalkil pou rasterize an tan reyèl. Polis SDF yo jwenn yon balans ideyal - yon sèl teksti kontra enfòmèl ant trè byen nan prèske nenpòt echèl ak yon minimòm GPU anlè, sa ki fè yo chwa pi pito pou aplikasyon an tan reyèl tankou jwèt ak tablodbò entèaktif.

Ki zouti ak bibliyotèk ki disponib pou jenere polis SDF?

Opsyon popilè yo gen ladan msdfgen pou jenerasyon SDF milti-chanèl, Hiero pou anbalaj font bitmap ak sipò SDF, ak divès kalite sèvis piblik sous louvri. Pifò motè jwèt tankou Unity ak Godot gen ladan sipò tèks SDF entegre. Pou biznis ki kreye aplikasyon koutim, platfòm tankou Mewayz ak eksplwatasyon biznis 207 modil li yo kòmanse nan $ 19/moun ka entegre teknik rann sa yo nan eksperyans dijital mak.

Èske polis SDF yo ka jere efè espesyal tankou plan, lonbraj, ak tèks klere?

Absoliman — sa a se youn nan pi gwo fòs polis SDF yo. Paske done jaden distans yo disponib nan lonbraj la, ou ka ajoute deskripsyon, lonbraj gout, ekla mou, e menm efè anime lè w jis ajiste valè papòt yo. Efè sa yo pa koute prèske anyen nan pèfòmans paske yo pa bezwen jeyometri adisyonèl oswa pase teksti, bay konsèpteur libète kreyatif remakab san sakrifye pousantaj ankadreman.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 6,207+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,207+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime