\9 \9 \9 \9 \9 \9 \9 \9 ");width:.75em;height:.75em;margin-bottom:-.1em;margin-left:.25em;display:inline-block}@media screen and (width<=1200px){body>.page header nav .row .left,body>.page header nav .row .right{--height:50px;--button-padding:16px;--nav-font-size:24px;gap:30px}}@media screen and (width<=1000px){body>.page header nav .row .left,body>.page header nav .row .right{--button-padding:14px;--nav-font-size:20px;gap:30px}}@media print,screen and (width<=900px){body>.page header nav .row .left,body>.page header nav .row .right{--height:40px;--button-padding:13px;--nav-font-size:18px;gap:20px}}@media print,screen and (width<=780px){body>.page header nav .row .left,body>.page header nav .row .right{--button-padding:12px;--nav-font-size:16px;gap:20px}}@media screen and (width<=680px){body>.page header nav .row .left,body>.page header nav .row .right{--height:30px;--button-padding:8px;--nav-font-size:14px;gap:16px}}@media screen and (width<=580px){body>.page header nav .row .left,body>.page header nav .row .right{--height:24px;--nav-font-size:13px;gap:12px}}@media screen and (width<=520px){body>.page header nav .row .left,body>.page header nav .row .right{--height:22px;--button-padding:6px;--nav-font-size:12px;gap:10px}}@media screen and (width<=460px){body>.page header nav .row .left,body>.page header nav .row .right{--height:20px;--button-padding:4px;--nav-font-size:11px;gap:8px}}@media screen and (width<=420px){body>.page header nav .row .left,body>.page header nav .row .right{--nav-font-size:10px;gap:6px}}@media screen and (width<=380px){body>.page header nav .row .left,body>.page header nav .row .right{--nav-font-size:9px;gap:6px}}@media screen and (width<=350px){body>.page header nav .row .left,body>.page header nav .row .right{--nav-font-size:8px;gap:6px}}body>.page header .ripple{fill:#fff;stroke:currentColor;--ripple-height:16px;height:var(--ripple-height);margin-top:calc(-1*var(--ripple-height) + var(--border-thickness));margin-bottom:calc(-1*var(--border-thickness));stroke-width:var(--border-thickness);background:0 0;display:block}body>.page header .ripple:before,body>.page header .ripple:after{content:none}body>.page header hr{background:0 0}@media screen and (width<=1400px){body>.page header .ripple{width:calc(100% + var(--page-edge-padding)*2);margin-left:calc(-1*var(--page-edge-padding));margin-right:calc(-1*var(--page-edge-padding))}body>.page header hr{display:none}}body>.page main{padding:calc(120*var(--variable-px))var(--page-edge-padding)}body>.page main>section{max-width:var(--max-width);z-index:1;margin-left:auto;margin-right:auto;position:relative}body>.page main>section~section{margin-top:calc(120*var(--variable-px))}body>.page main>section p img{max-width:100%}body>.page main>section pre{box-sizing:border-box;overflow:auto}body>.page main>section details{width:100%}body>.page main>section details summary{padding-left:18px;font-weight:800;display:inline-block;position:relative}body>.page main>section details summary:before{content:"";background:url("data:image/svg+xml;utf8,\9 \9 \9 \9 \9 \9 \9 \9 \9 \9 \9 \9 \9 \9 ");width:10px;height:10px;margin:auto;position:absolute;top:0;bottom:0;left:0}body>.page main>section details summary+*{margin-top:20px}body>.page main>section details[open] summary:before{transform:rotate(90deg)}body>.page footer{color:var(--color-walnut);flex-direction:column;align-items:center;padding:0 40px 40px;display:flex}@media screen and (width<=1400px){body>.page footer hr{width:100%}body>.page footer hr:before,body>.page footer hr:after{width:calc(var(--page-edge-padding) + 40px);height:var(--border-thickness);background:currentColor;border:none}}body>.page footer nav{flex-wrap:wrap;justify-content:center;gap:8px 40px;margin-top:40px;display:flex}body>.page footer nav a{color:var(--color-walnut)}@media screen and (width<=900px){body>.page footer nav{max-width:500px}}@media screen and (width<=780px){body>.page footer nav{max-width:440px}}@media screen and (width<=400px){body>.page footer nav{gap:6px 20px}}body>.page footer span{text-align:center;margin-top:40px}:is(h1,h2,h3,h4,article>:first-child,details>summary)~:is(p,ul,ol,ol li p,img,a:has(>img:only-child)),:is(h1,h2,h3,h4,article>:first-child)~:is(ul,ol) li p+img,:is(h1,h2,h3,h4,p)~.feature-icons,p~:is(h1,h2,h3,h4,details summary,blockquote,.image-comparison,.video-background,.youtube-embed),.youtube-embed+:is(p,.link,.button),p+p>.button,p+:is(.link,section,details),table td p~p,img+.link,article{margin-top:20px}*{min-width:0;min-height:0}h1{font-feature-settings:"lnum";margin:0;font-family:Bona Nova,Palatino,serif;font-size:2.66667rem;font-weight:700;line-height:1.25;display:inline-block}h1~h2{margin-top:40px}h1~hr{margin-top:40px;margin-bottom:20px}h2,h3,h4,h5,h6{margin:0;font-family:Inter,sans-serif;font-weight:800;line-height:1.5;display:inline-block}h2{font-size:1.77778rem;font-weight:700}h3{font-size:1.33333rem}h4,h5,h6{font-size:1rem}p{text-align:justify;text-justify:inter-character;-webkit-hyphens:auto;hyphens:auto;margin:0}p code{text-justify:auto}h1~img,h1~iframe,h1~a>img:only-child,h2~img,h2~iframe,h2~a>img:only-child,h3~img,h3~iframe,h3~a>img:only-child,h4~img,h4~iframe,h4~a>img:only-child,h5~img,h5~iframe,h5~a>img:only-child,h6~img,h6~iframe,h6~a>img:only-child,p~img,p~iframe,p~a>img:only-child{width:100%;height:auto}a{color:var(--color-crimson)}img{vertical-align:top}table{width:calc(100% + 40px);margin:20px -20px}table th,table td{vertical-align:top;border:20px solid #0000;margin:0;padding:0}table th:not(:first-child) img,table td:not(:first-child) img{max-width:100%}table th:empty{border:none}:is(h1,h2,h3,h4,h5,h6)+table{margin-top:0}ul,ol{margin:0}ul+p,ol+p{margin-top:0}ul li,ol li{margin-top:.5em}hr{color:unset}code{color:#000;background:var(--color-fog);overflow-wrap:anywhere;-webkit-hyphens:none;hyphens:none;padding:0 4px}a code{color:var(--color-crimson)}kbd{outline:calc(var(--border-thickness)/2)solid var(--color-navy);color:inherit;margin:0 4px;padding:0 8px;font-family:inherit}summary{cursor:pointer}hr{overflow:visible}hr,.ripple{height:var(--border-thickness);background:currentColor;border:none;width:calc(100% - 64px);margin:0 32px;position:relative}hr:before,.ripple:before{border-width:0 0 var(--border-thickness)40px;left:-40px}hr:after,.ripple:after{border-width:0 40px var(--border-thickness)0;right:-40px}hr:before,hr:after,.ripple:before,.ripple:after{content:"";border-style:solid;border-color:#0000 #0000 currentColor;width:0;height:0;display:block;position:absolute}.block{flex-direction:column;align-items:flex-start;width:100%;display:flex}.block.centered{align-items:center}:not(.diptych,.triptych)>.block+.block{margin-top:calc(120*var(--variable-px))}.link{font-size:var(--font-size-link);color:var(--color-crimson);white-space:nowrap;font-weight:800;text-decoration:none;display:inline-block}.link:not(.not-uppercase){text-transform:uppercase}.button{border:var(--border-thickness)solid currentColor;min-height:calc(var(--font-size-link)*2);font-size:var(--font-size-link);padding:0 var(--font-size-link);box-sizing:border-box;text-align:left;color:var(--color-crimson);font-weight:800;text-decoration:none;display:inline-block}.button:before{content:"";line-height:calc(var(--font-size-link)*2 - 2*var(--border-thickness))}.button img{height:calc(var(--font-size-link)*1.5);margin-right:calc(var(--font-size-link)/2)}.button img,.button span{vertical-align:middle}.arrow:after{content:" »";font-family:Inter,sans-serif}.video-background{font-size:0;position:relative}.video-background video{max-width:min(100%,1280px)}.video-background:after{content:"";pointer-events:none;border:2px solid #fff;position:absolute;inset:0}
Graphite progress report (Q1 2024)
By Keavon Chambers & Hypercube. May 09, 2024.
Graphite is a new 2D vector graphics editor bringing a modern, nondestructive approach to creative workflows with node-based procedural generation. The project is currently three years into development, with a focus on streamlining the creative process for procedural vector artwork. See the roadmap for a more in-depth summary of the goals for 2024 and beyond.
Starting in 2024, we are now publishing quarterly reports to summarize the new features and improvements made to Graphite. If you missed the 2023 year in review, be sure to check it out after this. We anticipate sending our first email newsletter (with more to follow roughly quarterly) in the near future as well, so be sure to subscribe if you haven't already.
Over the first three months of the year, we are delighted to have seen many contributions both from new and recurrent contributors, including substantial interest by students through Google Summer of Code. We would like to send a big thanks to all of the contributors who made this progress happen. If you are interested in getting involved or just following development, see the contributor guide and join our Discord.
All Q1 2024 commits may be viewed in this list and all noteworthy changes are detailed below. As two of the major new features are the grid and snapping systems, the Isometric Fountain artwork shown on this blog post demonstrates what those features can achieve.