<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>1A23 Studio</title>
	<atom:link href="https://1a23.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://1a23.com/</link>
	<description>We create.</description>
	<lastBuildDate>Tue, 09 Jun 2026 18:46:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://1a23.com/wp-content/uploads/2020/12/cropped-Square-primary-32x32.png</url>
	<title>1A23 Studio</title>
	<link>https://1a23.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://1a23.com/feed/"/>
<site xmlns="com-wordpress:feed-additions:1">70923571</site>	<item>
		<title>Simple Memo</title>
		<link>https://1a23.com/works/open-source/simple-memo/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 18:42:40 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[Wear OS]]></category>
		<guid isPermaLink="false">https://1a23.com/?post_type=open-source&#038;p=1559</guid>

					<description><![CDATA[<img width="1200" height="630" src="https://1a23.com/wp-content/uploads/2026/06/image.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" fetchpriority="high" srcset="https://1a23.com/wp-content/uploads/2026/06/image.png 1200w, https://1a23.com/wp-content/uploads/2026/06/image-300x158.png 300w, https://1a23.com/wp-content/uploads/2026/06/image-768x403.png 768w, https://1a23.com/wp-content/uploads/2026/06/image-1024x538.png 1024w" sizes="(max-width: 1200px) 100vw, 1200px" /><p>Simple Memo for Wear OS keeps your essential information just a glance away on your smartwatch. Perfect for remembering gym locker combinations, parking spot numbers, temporary door codes, room numbers, or meeting PINs. This lightweight app lets you quickly note down and edit a single piece of important information right on your Wear OS watch. [&#8230;]</p>
<p><a href="https://1a23.com/works/open-source/simple-memo/">Simple Memo</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1200" height="630" src="https://1a23.com/wp-content/uploads/2026/06/image.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/06/image.png 1200w, https://1a23.com/wp-content/uploads/2026/06/image-300x158.png 300w, https://1a23.com/wp-content/uploads/2026/06/image-768x403.png 768w, https://1a23.com/wp-content/uploads/2026/06/image-1024x538.png 1024w" sizes="auto, (max-width: 1200px) 100vw, 1200px" />
<p class="wp-block-paragraph">Simple Memo for Wear OS keeps your essential information just a glance away on your smartwatch. Perfect for remembering gym locker combinations, parking spot numbers, temporary door codes, room numbers, or meeting PINs.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://play.google.com/store/apps/details?id=com.studio1a23.simplenote"><img decoding="async" src="https://1a23.com/wp-content/uploads/2025/01/GetItOnGooglePlay_Badge_Web_color_English.svg" alt="Get it on Google Play" class="wp-image-2205" style="aspect-ratio:3.3719704952581666;object-fit:cover;width:300px;height:auto" data-mwl-img-id="2205" /></a></figure>



<figure class="wp-block-gallery alignwide has-nested-images columns-5 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="576" height="1024" data-id="2214" src="https://1a23.com/wp-content/uploads/2026/06/image-1-576x1024.png" alt="" class="wp-image-2214" srcset="https://1a23.com/wp-content/uploads/2026/06/image-1-576x1024.png 576w, https://1a23.com/wp-content/uploads/2026/06/image-1-169x300.png 169w, https://1a23.com/wp-content/uploads/2026/06/image-1-768x1365.png 768w, https://1a23.com/wp-content/uploads/2026/06/image-1-864x1536.png 864w, https://1a23.com/wp-content/uploads/2026/06/image-1.png 1080w" sizes="(max-width: 576px) 100vw, 576px" data-mwl-img-id="2214" /></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/01/Screenshot-2.png"><img decoding="async" width="576" height="1024" data-id="1562" src="https://1a23.com/wp-content/uploads/2025/01/Screenshot-2-576x1024.png" alt="" class="wp-image-1562" srcset="https://1a23.com/wp-content/uploads/2025/01/Screenshot-2-576x1024.png 576w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-2-169x300.png 169w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-2-768x1365.png 768w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-2-864x1536.png 864w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-2.png 1080w" sizes="(max-width: 576px) 100vw, 576px" data-mwl-img-id="1562" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/01/Screenshot-3.png"><img loading="lazy" decoding="async" width="576" height="1024" data-id="1564" src="https://1a23.com/wp-content/uploads/2025/01/Screenshot-3-576x1024.png" alt="Keep information at a glance" class="wp-image-1564" srcset="https://1a23.com/wp-content/uploads/2025/01/Screenshot-3-576x1024.png 576w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-3-169x300.png 169w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-3-768x1365.png 768w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-3-864x1536.png 864w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-3.png 1080w" sizes="auto, (max-width: 576px) 100vw, 576px" data-mwl-img-id="1564" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/01/Screenshot-1.png"><img loading="lazy" decoding="async" width="576" height="1024" data-id="1563" src="https://1a23.com/wp-content/uploads/2025/01/Screenshot-1-576x1024.png" alt="Choose your preferred keyboad options" class="wp-image-1563" srcset="https://1a23.com/wp-content/uploads/2025/01/Screenshot-1-576x1024.png 576w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-1-169x300.png 169w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-1-768x1365.png 768w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-1-864x1536.png 864w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-1.png 1080w" sizes="auto, (max-width: 576px) 100vw, 576px" data-mwl-img-id="1563" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/01/Screenshot-4.png"><img loading="lazy" decoding="async" width="576" height="1024" data-id="1565" src="https://1a23.com/wp-content/uploads/2025/01/Screenshot-4-576x1024.png" alt="Track your edit history" class="wp-image-1565" srcset="https://1a23.com/wp-content/uploads/2025/01/Screenshot-4-576x1024.png 576w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-4-169x300.png 169w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-4-768x1365.png 768w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-4-864x1536.png 864w, https://1a23.com/wp-content/uploads/2025/01/Screenshot-4.png 1080w" sizes="auto, (max-width: 576px) 100vw, 576px" data-mwl-img-id="1565" /></a></figure>
</figure>



<p class="wp-block-paragraph">This lightweight app lets you quickly note down and edit a single piece of important information right on your Wear OS watch. Access your memo instantly through the app, a customizable watch face complication, or a convenient Wear OS tile.</p>



<h2 id="key-features" class="wp-block-heading">Key Features</h2>



<ul class="wp-block-list">
<li><strong>Flexible keyboard options</strong>: Choose between number pad, full text, email, and more input methods</li>



<li><strong>Quick access tile</strong>: View your memo directly from your watch face swipe</li>



<li><strong>Watch face complications</strong>: Keep your note visible at all times</li>



<li><strong>Edit history</strong>: Track your last 10 changes</li>
</ul>



<p class="wp-block-paragraph">The perfect companion for those moments when you need to remember just one crucial detail.</p>



<p class="wp-block-paragraph">If you have any bug report or feedback, feel free to share it on <a href="https://github.com/blueset/simplenote">GitHub</a>.</p>
<p><a href="https://1a23.com/works/open-source/simple-memo/">Simple Memo</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1559</post-id>	</item>
		<item>
		<title>Oare Sans</title>
		<link>https://1a23.com/works/design/oare-sans/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 01:58:51 +0000</pubDate>
				<guid isPermaLink="false">https://1a23.com/?post_type=design&#038;p=2141</guid>

					<description><![CDATA[<img width="1200" height="675" src="https://1a23.com/wp-content/uploads/2026/06/Banner.png" class="webfeedsFeaturedVisual wp-post-image" alt="Oare Sans banner" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/06/Banner.png 1200w, https://1a23.com/wp-content/uploads/2026/06/Banner-300x169.png 300w, https://1a23.com/wp-content/uploads/2026/06/Banner-1024x576.png 1024w, https://1a23.com/wp-content/uploads/2026/06/Banner-768x432.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><p>oare n. [o.ˈa.ɾɛ] moon Oare Sans&#160;is a condensed geometric display sans-serif typeface with variable axes for weight and slant. This typeface is an expansion of the&#160;custom logotype created for PSCTF&#160;from a limited set of letters to cover the GF Latin Core character set, and with variable expansion from Thin to Black and Regular to Oblique. [&#8230;]</p>
<p><a href="https://1a23.com/works/design/oare-sans/">Oare Sans</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1200" height="675" src="https://1a23.com/wp-content/uploads/2026/06/Banner.png" class="webfeedsFeaturedVisual wp-post-image" alt="Oare Sans banner" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/06/Banner.png 1200w, https://1a23.com/wp-content/uploads/2026/06/Banner-300x169.png 300w, https://1a23.com/wp-content/uploads/2026/06/Banner-1024x576.png 1024w, https://1a23.com/wp-content/uploads/2026/06/Banner-768x432.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" />
<p class="is-style-default has-primary-background-color has-background wp-block-paragraph" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--30)"><strong>oare</strong> <em>n.</em> [o.ˈa.ɾɛ] moon</p>



<p class="wp-block-paragraph"><strong>Oare Sans</strong>&nbsp;is a condensed geometric display sans-serif typeface with variable axes for weight and slant. This typeface is an expansion of the&nbsp;<a href="https://1a23.com/works/design/project-sekai-ctf/">custom logotype created for PSCTF</a>&nbsp;from a limited set of letters to cover the GF Latin Core character set, and with variable expansion from Thin to Black and Regular to Oblique. This design was initiated from the desire to create a typeface that would match the initial design of the unconventional letter shapes of S and C. The name “Oare” is also named after the&nbsp;<a href="https://1a23.com/works/open-source/luna-for-ctfd/">Luna CTFd theme</a>&nbsp;commissioned by the same team.</p>



<figure class="wp-block-gallery alignwide has-nested-images columns-3 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="819" height="1024" data-id="2147" src="https://1a23.com/wp-content/uploads/2026/06/Styles-819x1024.png" alt="Poster showing 18 styles of the font from Thin to Black with Oblique variants." class="wp-image-2147" srcset="https://1a23.com/wp-content/uploads/2026/06/Styles-819x1024.png 819w, https://1a23.com/wp-content/uploads/2026/06/Styles-240x300.png 240w, https://1a23.com/wp-content/uploads/2026/06/Styles-768x960.png 768w, https://1a23.com/wp-content/uploads/2026/06/Styles.png 1080w" sizes="auto, (max-width: 819px) 100vw, 819px" data-mwl-img-id="2147" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1080" height="1350" data-id="2148" src="https://1a23.com/wp-content/uploads/2026/06/Poster1.png" alt="Poster showing Thin Oblique in 300 px" class="wp-image-2148" srcset="https://1a23.com/wp-content/uploads/2026/06/Poster1.png 1080w, https://1a23.com/wp-content/uploads/2026/06/Poster1-240x300.png 240w, https://1a23.com/wp-content/uploads/2026/06/Poster1-768x960.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" data-mwl-img-id="2148" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="819" height="1024" data-id="2149" src="https://1a23.com/wp-content/uploads/2026/06/Poster2-819x1024.png" alt="Poster showing 6 different styles of the font" class="wp-image-2149" srcset="https://1a23.com/wp-content/uploads/2026/06/Poster2-819x1024.png 819w, https://1a23.com/wp-content/uploads/2026/06/Poster2-768x960.png 768w, https://1a23.com/wp-content/uploads/2026/06/Poster2-240x300.png 240w, https://1a23.com/wp-content/uploads/2026/06/Poster2.png 1080w" sizes="auto, (max-width: 819px) 100vw, 819px" data-mwl-img-id="2149" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="819" height="1024" data-id="2151" src="https://1a23.com/wp-content/uploads/2026/06/Poster3-819x1024.png" alt="Poster showing the font in Black 230 px" class="wp-image-2151" srcset="https://1a23.com/wp-content/uploads/2026/06/Poster3-819x1024.png 819w, https://1a23.com/wp-content/uploads/2026/06/Poster3-240x300.png 240w, https://1a23.com/wp-content/uploads/2026/06/Poster3-768x960.png 768w, https://1a23.com/wp-content/uploads/2026/06/Poster3.png 1080w" sizes="auto, (max-width: 819px) 100vw, 819px" data-mwl-img-id="2151" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="819" height="1024" data-id="2190" src="https://1a23.com/wp-content/uploads/2026/06/Poster5-819x1024.png" alt="" class="wp-image-2190" srcset="https://1a23.com/wp-content/uploads/2026/06/Poster5-819x1024.png 819w, https://1a23.com/wp-content/uploads/2026/06/Poster5-240x300.png 240w, https://1a23.com/wp-content/uploads/2026/06/Poster5-768x960.png 768w, https://1a23.com/wp-content/uploads/2026/06/Poster5.png 1080w" sizes="auto, (max-width: 819px) 100vw, 819px" data-mwl-img-id="2190" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="819" height="1024" data-id="2189" src="https://1a23.com/wp-content/uploads/2026/06/Poster6-819x1024.png" alt="" class="wp-image-2189" srcset="https://1a23.com/wp-content/uploads/2026/06/Poster6-819x1024.png 819w, https://1a23.com/wp-content/uploads/2026/06/Poster6-240x300.png 240w, https://1a23.com/wp-content/uploads/2026/06/Poster6-768x960.png 768w, https://1a23.com/wp-content/uploads/2026/06/Poster6.png 1080w" sizes="auto, (max-width: 819px) 100vw, 819px" data-mwl-img-id="2189" /></figure>
</figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="819" height="1024" src="https://1a23.com/wp-content/uploads/2026/06/Poster4-819x1024.png" alt="Poster showing Stylistic Sets of the font." class="wp-image-2150" srcset="https://1a23.com/wp-content/uploads/2026/06/Poster4-819x1024.png 819w, https://1a23.com/wp-content/uploads/2026/06/Poster4-240x300.png 240w, https://1a23.com/wp-content/uploads/2026/06/Poster4-768x960.png 768w, https://1a23.com/wp-content/uploads/2026/06/Poster4.png 1080w" sizes="auto, (max-width: 819px) 100vw, 819px" data-mwl-img-id="2150" /></figure>



<h2 class="wp-block-heading">OpenType Features</h2>



<ul class="wp-block-list">
<li>Kerning <code>kern</code>, Ligautures <code>liga</code>, Ordinals <code>ordn</code>, Glyph Composition/Decomposition <code>ccmp</code></li>



<li>Localized Forms <code>locl</code>: Moldavian <code>MOL</code>, Romanian <code>ROU</code>, Turkish <code>TUR</code>, Dutch <code>NLD</code>, and Catalan <code>CAT</code></li>



<li>Stylistic Sets
<ul class="wp-block-list">
<li><code>ss01</code>: Alternative J</li>



<li><code>ss02</code>: Single story a</li>



<li><code>ss03</code>: Alternative S and 5 (Symmetrical S)</li>



<li><code>ss04</code>: Alternative S and 5 (Asymmetrical S)</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Preview</h2>



<div class="wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<iframe id="oareEmbed" src="https://blueset.github.io/oare-sans/embed.html?color=fff&#038;invertColor=00171f" style="border:0; width:100%;max-width: unset; height:150px; background:transparent" scrolling="no"></iframe>
<script>
  (function () {
    var frame = document.getElementById("oareEmbed");
    window.addEventListener("message", function (event) {
      // Only trust messages from the embed's origin and this iframe.
      if (event.origin !== "https://blueset.github.io") return;
      if (event.source !== frame.contentWindow) return;
      var data = event.data;
      if (data && data.type === "oare-sans:embed-height") {
        frame.style.height = data.height + "px";
      }
    });
    // Optional: ask for a fresh height after the iframe loads.
    frame.addEventListener("load", function () {
      frame.contentWindow.postMessage({ type: "oare-sans:request-height" }, "https://blueset.github.io");
    });
  })();
</script>



<h2 class="wp-block-heading">License</h2>
</div>



<blockquote class="wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Copyright (c) 2026 Eana Hufwe, 1A23 Studio (<a href="https://1A23.studio">https://1A23.studio</a>)</p>



<p class="wp-block-paragraph">This Font Software is licensed under the SIL Open Font License, Version 1.1.<br>This license is in this repo <a href="https://github.com/blueset/oare-sans/blob/master/LICENSE.md">LICENSE.md</a>, and is also available with a FAQ at:<br><a href="https://openfontlicense.org">https://openfontlicense.org</a></p>
</blockquote>
<p><a href="https://1a23.com/works/design/oare-sans/">Oare Sans</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2141</post-id>	</item>
		<item>
		<title>Mìkam Kana みっかん</title>
		<link>https://1a23.com/works/design/mikam-kana/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 01:57:24 +0000</pubDate>
				<guid isPermaLink="false">https://1a23.com/?post_type=design&#038;p=2159</guid>

					<description><![CDATA[<img width="1200" height="675" src="https://1a23.com/wp-content/uploads/2026/06/Banner-1.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/06/Banner-1.png 1200w, https://1a23.com/wp-content/uploads/2026/06/Banner-1-300x169.png 300w, https://1a23.com/wp-content/uploads/2026/06/Banner-1-1024x576.png 1024w, https://1a23.com/wp-content/uploads/2026/06/Banner-1-768x432.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><p>mìkam adp. [mɪ.ˈkam] between. みっかん 3⃞ 〔mìkam〕（両者）の間に。 Mìkam Kana is a Japanese Kana font built from a patchwork of Inter, to design Japanese Hiragana and Katakana characters that resemble the appearance of Latin-Cyrillic-Greek letters in a Neo-Grotesque Sans-Serif style. The inspiration of the font is to develop a reverse font of Electroharmonix, a font that [&#8230;]</p>
<p><a href="https://1a23.com/works/design/mikam-kana/">Mìkam Kana みっかん</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1200" height="675" src="https://1a23.com/wp-content/uploads/2026/06/Banner-1.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/06/Banner-1.png 1200w, https://1a23.com/wp-content/uploads/2026/06/Banner-1-300x169.png 300w, https://1a23.com/wp-content/uploads/2026/06/Banner-1-1024x576.png 1024w, https://1a23.com/wp-content/uploads/2026/06/Banner-1-768x432.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" />
<p class="has-primary-background-color has-background wp-block-paragraph" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--30)"><strong>mìkam</strong> <em>adp.</em> [mɪ.ˈkam] between.</p>



<p class="has-primary-background-color has-background wp-block-paragraph" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--30)"><strong>みっかん</strong> <span style="font-family: InterVariable, Inter, Archivo, sans-serif; font-feature-settings: 'ccmp' 1;">3⃞</span> 〔mìkam〕<span lang="ja" dir="ltr" class="lang-attribute">（両者）の間に。</span></p>



<style data-wp-block-html="css">
@import url("https://rsms.me/inter/inter.css");
</style>



<p class="wp-block-paragraph">Mìkam Kana is a Japanese Kana font built from a patchwork of <a href="https://rsms.me/inter">Inter</a>, to design Japanese Hiragana and Katakana characters that resemble the appearance of Latin-Cyrillic-Greek letters in a Neo-Grotesque Sans-Serif style. The inspiration of the font is to develop a reverse font of <a href="https://www.dafont.com/electroharmonix.font">Electroharmonix</a>, a font that designs Latin letters in a style that resembles the appearance of Japanese Hiragana and Katakana characters. It is known as the font that “only Japanese people can’t read”. Despite the fact that Mìkam Kana is conceptually a reverse font of Electroharmonix, due to the fact that most Japanese speakers can also read Latin alphabets, Mìkam Kana has ended up being an “exotic and cryptic” font.</p>



<p class="wp-block-paragraph">The name Mìkam, which means “between”, is both a reference to the fact that the font is designed to be a “between” of Latin and Japanese characters, and also a reference to the name of the base font <em>Inter</em>.</p>



<p class="wp-block-paragraph"><span lang="ja" dir="ltr" class="lang-attribute">『みっかん』は、<a href="https://rsms.me/inter">Inter</a> のもとにつぎはぎして作られた、ローマ字ゴシック体風の仮名フォントである。インスピレーションは、カタカナに見えるローマ字フォントで、かの有名な「日本人だけが読めないフォント」として知られている <a href="https://www.dafont.com/electroharmonix.font">Electroharmonix</a> の逆バージョンのようなフォントを作りたかったのですが、いかんせん日本語話者は皆おおむねローマ字も読めるため、普通に暗号フォントのようなものを作ってしまいました。</span></p>



<p class="wp-block-paragraph"><span lang="ja" dir="ltr" class="lang-attribute">フォント名の「みっかん」は、「両者の間に」（between）という意味で、フォントがローマ字と仮名の「間」に位置することを表すとともに、ベースフォントである Inter へのオマージュでもあります。</span></p>



<figure class="wp-block-gallery has-nested-images columns-1 wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="685" data-id="2163" src="https://1a23.com/wp-content/uploads/2026/06/sample-1024x685.png" alt="" class="wp-image-2163" srcset="https://1a23.com/wp-content/uploads/2026/06/sample-1024x685.png 1024w, https://1a23.com/wp-content/uploads/2026/06/sample-767x513.png 767w, https://1a23.com/wp-content/uploads/2026/06/sample-300x201.png 300w, https://1a23.com/wp-content/uploads/2026/06/sample-600x400.png 600w, https://1a23.com/wp-content/uploads/2026/06/sample.png 1256w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2163" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1256" height="840" data-id="2164" src="https://1a23.com/wp-content/uploads/2026/06/mix-sample.png" alt="" class="wp-image-2164" srcset="https://1a23.com/wp-content/uploads/2026/06/mix-sample.png 1256w, https://1a23.com/wp-content/uploads/2026/06/mix-sample-767x513.png 767w, https://1a23.com/wp-content/uploads/2026/06/mix-sample-300x201.png 300w, https://1a23.com/wp-content/uploads/2026/06/mix-sample-600x400.png 600w, https://1a23.com/wp-content/uploads/2026/06/mix-sample-1024x685.png 1024w" sizes="auto, (max-width: 1256px) 100vw, 1256px" data-mwl-img-id="2164" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="183" data-id="2165" src="https://1a23.com/wp-content/uploads/2026/06/finder-1024x183.png" alt="" class="wp-image-2165" srcset="https://1a23.com/wp-content/uploads/2026/06/finder-1024x183.png 1024w, https://1a23.com/wp-content/uploads/2026/06/finder-300x54.png 300w, https://1a23.com/wp-content/uploads/2026/06/finder-766x137.png 766w, https://1a23.com/wp-content/uploads/2026/06/finder.png 1247w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2165" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2048" height="2560" data-id="2169" src="https://1a23.com/wp-content/uploads/2026/06/poster-scaled.png" alt="" class="wp-image-2169" srcset="https://1a23.com/wp-content/uploads/2026/06/poster-scaled.png 2048w, https://1a23.com/wp-content/uploads/2026/06/poster-240x300.png 240w, https://1a23.com/wp-content/uploads/2026/06/poster-819x1024.png 819w, https://1a23.com/wp-content/uploads/2026/06/poster-768x960.png 768w, https://1a23.com/wp-content/uploads/2026/06/poster-1229x1536.png 1229w, https://1a23.com/wp-content/uploads/2026/06/poster-1638x2048.png 1638w" sizes="auto, (max-width: 2048px) 100vw, 2048px" data-mwl-img-id="2169" /></figure>
</figure>



<h2 class="wp-block-heading">Glyph Coverage <bdo lang="ja" dir="ltr">収録範囲</bdo></h2>



<p class="wp-block-paragraph">This font covers most hiragana, katakana, and selected punctuation characters.<br>Recommended pairing fonts: <a href="https://rsms.me/inter">Inter</a>, <a href="https://gen.typesetting.jp/">Gen Interface JP</a>, <a href="https://github.com/adobe-fonts/source-han-sans">Source Han Sans</a>.</p>



<p class="wp-block-paragraph"><span lang="ja" dir="ltr" class="lang-attribute">このフォントは、ひらがな、カタカナ、および一部の約物を収録しています。<br>推奨の混植フォント：<a href="https://rsms.me/inter">Inter</a>、<a href="https://gen.typesetting.jp/">Gen Interface JP</a>、<a href="https://github.com/adobe-fonts/source-han-sans">源ノ角ゴシック</a>。</span></p>



<h2 class="wp-block-heading">Preview</h2>



<iframe id="mikamEmbed" src="https://blueset.github.io/mikam-kana/embed.html?color=fff&amp;invertColor=00171f" style="border:0; width:100%; max-width:unset; height:150px; background:transparent" scrolling="no"></iframe>
<script>
  (function () {
    var ORIGIN = "https://blueset.github.io";
    var frame = document.getElementById("mikamEmbed");

    // Tell the embed where it sits in the viewport so it can keep its preview
    // visually centered (emulated `position: sticky`).
    function postViewport() {
      if (!frame.contentWindow) return;
      var rect = frame.getBoundingClientRect();
      frame.contentWindow.postMessage(
        { type: "mikam-kana:viewport", iframeTop: rect.top, viewportHeight: window.innerHeight },
        ORIGIN
      );
    }

    window.addEventListener("message", function (event) {
      // Only trust messages from the embed's origin and this iframe.
      if (event.origin !== ORIGIN) return;
      if (event.source !== frame.contentWindow) return;
      var data = event.data;
      if (!data) return;
      if (data.type === "mikam-kana:embed-height") {
        frame.style.height = data.height + "px";
      } else if (data.type === "mikam-kana:request-viewport") {
        postViewport();
      }
    });

    // Keep the embed informed as the page scrolls or resizes.
    window.addEventListener("scroll", postViewport, { passive: true });
    window.addEventListener("resize", postViewport);

    // After load: ask for a fresh height, and send the initial scroll position.
    frame.addEventListener("load", function () {
      frame.contentWindow.postMessage({ type: "mikam-kana:request-height" }, ORIGIN);
      postViewport();
    });
  })();
</script>



<h2 class="wp-block-heading">License ライセンス</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Copyright (c) 2026 Eana Hufwe, 1A23 Studio (https://1A23.studio)<br>Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter)</p>



<p class="wp-block-paragraph">This Font Software is licensed under the SIL Open Font License, Version 1.1.<br>This license is in this repo LICENSE.md, and is also available with a FAQ at:<br>https://openfontlicense.org</p>



<p class="wp-block-paragraph"><span lang="ja" dir="ltr" class="lang-attribute">このフォントソフトウェアは、SIL Open Font License, Version 1.1 のもとでライセンスされています。<br>このライセンスはこのリポジトリの LICENSE.md に記載されており、FAQ とともに https://openfontlicense.org にも公開されています。</span></p>
</blockquote>
<p><a href="https://1a23.com/works/design/mikam-kana/">Mìkam Kana みっかん</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2159</post-id>	</item>
		<item>
		<title>Holpxay Calculator</title>
		<link>https://1a23.com/works/open-source/holpxay-calculator/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Sun, 08 Feb 2026 20:25:38 +0000</pubDate>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Moo]]></category>
		<category><![CDATA[Nearley]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Temporal]]></category>
		<guid isPermaLink="false">https://1a23.com/?post_type=open-source&#038;p=2089</guid>

					<description><![CDATA[<img width="1200" height="630" src="https://1a23.com/wp-content/uploads/2026/02/holpxay.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/02/holpxay.png 1200w, https://1a23.com/wp-content/uploads/2026/02/holpxay-300x158.png 300w, https://1a23.com/wp-content/uploads/2026/02/holpxay-1024x538.png 1024w, https://1a23.com/wp-content/uploads/2026/02/holpxay-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><p>holpxay n. [hol.ˈp&#8217;aj] number. A notepad calculator where math just works. Type expressions, see results instantly. Features Arithmetic &#38; Numbers Units &#38; Conversions Date &#38; Time Currency Variables &#38; Conditionals Output Formats Editor Trivia This app is 70% written by Claude Opus 4.6 with constant human supervision and intervension. Initally it was planned to be [&#8230;]</p>
<p><a href="https://1a23.com/works/open-source/holpxay-calculator/">Holpxay Calculator</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1200" height="630" src="https://1a23.com/wp-content/uploads/2026/02/holpxay.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/02/holpxay.png 1200w, https://1a23.com/wp-content/uploads/2026/02/holpxay-300x158.png 300w, https://1a23.com/wp-content/uploads/2026/02/holpxay-1024x538.png 1024w, https://1a23.com/wp-content/uploads/2026/02/holpxay-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" />
<div class="wp-block-group is-style-default has-primary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-27be8982 wp-block-group-is-layout-constrained" style="border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--30)">
<p class="wp-block-paragraph"><strong>holpxay</strong>    <em>n.</em> [hol.ˈp&#8217;aj] number.</p>
</div>



<p class="wp-block-paragraph">A notepad calculator where math just works. Type expressions, see results instantly.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="847" height="1024" src="https://1a23.com/wp-content/uploads/2026/02/Screenshot-2026-02-15-120056-847x1024.png" alt="" class="wp-image-2088" srcset="https://1a23.com/wp-content/uploads/2026/02/Screenshot-2026-02-15-120056-847x1024.png 847w, https://1a23.com/wp-content/uploads/2026/02/Screenshot-2026-02-15-120056-248x300.png 248w, https://1a23.com/wp-content/uploads/2026/02/Screenshot-2026-02-15-120056-768x928.png 768w, https://1a23.com/wp-content/uploads/2026/02/Screenshot-2026-02-15-120056-1271x1536.png 1271w, https://1a23.com/wp-content/uploads/2026/02/Screenshot-2026-02-15-120056.png 1321w" sizes="auto, (max-width: 847px) 100vw, 847px" data-mwl-img-id="2088" /></figure>



<h2 class="wp-block-heading">Features<a href="https://github.com/blueset/calc#features"></a></h2>



<p class="wp-block-paragraph"><strong>Arithmetic &amp; Numbers</strong></p>



<ul class="wp-block-list">
<li>Basic math with&nbsp;<code>+</code>,&nbsp;<code>-</code>,&nbsp;<code>*</code>,&nbsp;<code>/</code>,&nbsp;<code>^</code>,&nbsp;<code>!</code>,&nbsp;<code>mod</code>, and parentheses</li>



<li>Alternative operators:&nbsp;<code>×</code>,&nbsp;<code>·</code>,&nbsp;<code>÷</code></li>



<li>Percentages (<code>50%</code>,&nbsp;<code>200 * 15%</code>), scientific notation, underscore separators</li>



<li>Hex (<code>0xFF</code>), binary (<code>0b1010</code>), octal (<code>0o777</code>), arbitrary bases (<code>ABC base 16</code>)</li>



<li>Built-in constants (<code>pi</code>,&nbsp;<code>e</code>,&nbsp;<code>phi</code>) and functions (<code>sin</code>,&nbsp;<code>cos</code>,&nbsp;<code>sqrt</code>,&nbsp;<code>log</code>,&nbsp;<code>round</code>,&nbsp;<code>abs</code>,&nbsp;<code>random</code>, &#8230;)</li>
</ul>



<p class="wp-block-paragraph"><strong>Units &amp; Conversions</strong></p>



<ul class="wp-block-list">
<li>200+ built-in units across length, mass, time, temperature, data, energy, power, pressure, frequency, angle, and more</li>



<li>Automatic cross-unit arithmetic:&nbsp;<code>5 km + 500 m</code>,&nbsp;<code>100 ft^2 + 5 m^2</code></li>



<li>Derived units:&nbsp;<code>60 km/h</code>,&nbsp;<code>9.8 m/s^2</code>,&nbsp;<code>50 watts per square meter</code></li>



<li>Composite values:&nbsp;<code>5 ft 7 in</code>,&nbsp;<code>2 hr 30 min 15 sec</code></li>



<li>Flexible conversion syntax:&nbsp;<code>to</code>,&nbsp;<code>in</code>,&nbsp;<code>as</code>,&nbsp;<code>-&gt;</code>,&nbsp;<code>→</code></li>



<li>Composite conversion targets:&nbsp;<code>171 cm to ft in</code></li>



<li>User-defined units:&nbsp;<code>150 apples / 30 apples/day</code></li>
</ul>



<p class="wp-block-paragraph"><strong>Date &amp; Time</strong></p>



<ul class="wp-block-list">
<li>Date literals, relative dates (<code>today</code>,&nbsp;<code>3 days ago</code>,&nbsp;<code>2 weeks from now</code>)</li>



<li>Time values in 12h/24h format</li>



<li>Date arithmetic:&nbsp;<code>now + 100 days</code>,&nbsp;<code>2038 Jan 19 - today</code></li>



<li>Timezone conversions:&nbsp;<code>18:30 Tokyo</code>,&nbsp;<code>now in London</code>, UTC offsets</li>



<li>Unix timestamps:&nbsp;<code>1700000000 unix</code></li>



<li>Property extraction:&nbsp;<code>today to weekday</code>,&nbsp;<code>now to hour</code></li>
</ul>



<p class="wp-block-paragraph"><strong>Currency</strong></p>



<ul class="wp-block-list">
<li>ISO codes, symbols, and names with live exchange rates</li>



<li>Arithmetic and conversion:&nbsp;<code>100 USD + 50 EUR</code>,&nbsp;<code>100 USD to JPY</code></li>



<li>Derived currency units:&nbsp;<code>150 USD/person * 4 person</code></li>
</ul>



<p class="wp-block-paragraph"><strong>Variables &amp; Conditionals</strong></p>



<ul class="wp-block-list">
<li>Variable assignment:&nbsp;<code>price = 49.99</code></li>



<li>Boolean expressions: comparisons,&nbsp;<code>&amp;&amp;</code>,&nbsp;<code>||</code>,&nbsp;<code>!</code></li>



<li>Conditionals:&nbsp;<code>if 5 &gt; 3 then 100 else 200</code></li>



<li>Bitwise operations:&nbsp;<code>&amp;</code>,&nbsp;<code>|</code>,&nbsp;<code>xor</code>,&nbsp;<code>~</code>,&nbsp;<code>&lt;&lt;</code>,&nbsp;<code>&gt;&gt;</code></li>
</ul>



<p class="wp-block-paragraph"><strong>Output Formats</strong></p>



<ul class="wp-block-list">
<li>Number bases (<code>to hex</code>,&nbsp;<code>to binary</code>), fractions, scientific notation, percentages, ordinals</li>



<li>Precision control:&nbsp;<code>pi to 2 decimals</code>,&nbsp;<code>12345 to 3 sig figs</code></li>



<li>Date/time formats: ISO 8601, RFC 2822, RFC 9557, unix timestamps</li>
</ul>



<p class="wp-block-paragraph"><strong>Editor</strong></p>



<ul class="wp-block-list">
<li>Markdown headings and inline comments (<code>#</code>)</li>



<li>GFM syntax highlighting alongside live calculations</li>



<li>Customizable themes, fonts, number/date formatting, and more</li>
</ul>



<div class="ghostkit-icon-box"><div class="ghostkit-icon-box-icon ghostkit-icon-box-icon-align-left"><svg class="ghostkit-svg-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.9998 2.25C12.2853 2.25 12.5461 2.41207 12.6724 2.66808L15.4368 8.26941L21.6183 9.16762C21.9008 9.20868 22.1355 9.40656 22.2237 9.67807C22.3119 9.94958 22.2383 10.2476 22.0339 10.4469L17.561 14.8069L18.6169 20.9634C18.6652 21.2448 18.5495 21.5291 18.3185 21.6969C18.0876 21.8647 17.7814 21.8869 17.5287 21.754L11.9998 18.8473L6.471 21.754C6.21831 21.8869 5.91211 21.8647 5.68115 21.6969C5.45019 21.5291 5.33453 21.2448 5.38279 20.9634L6.4387 14.8069L1.96577 10.4469C1.76134 10.2476 1.68777 9.94958 1.77599 9.67807C1.86421 9.40656 2.09892 9.20868 2.38143 9.16762L8.56287 8.26941L11.3273 2.66808C11.4536 2.41207 11.7144 2.25 11.9998 2.25ZM11.9998 4.69466L9.73347 9.28684C9.62422 9.5082 9.41305 9.66162 9.16877 9.69712L4.101 10.4335L7.76807 14.008C7.94484 14.1803 8.0255 14.4286 7.98377 14.6719L7.11809 19.7192L11.6508 17.3362C11.8693 17.2213 12.1304 17.2213 12.3489 17.3362L16.8816 19.7192L16.0159 14.6719C15.9742 14.4286 16.0549 14.1803 16.2316 14.008L19.8987 10.4335L14.8309 9.69712C14.5866 9.66162 14.3755 9.5082 14.2662 9.28684L11.9998 4.69466Z" fill="currentColor"/></svg></div><div class="ghostkit-icon-box-content is-layout-flow wp-block-ghostkit-icon-box-is-layout-flow">
<p class="wp-block-paragraph"><strong>Trivia</strong></p>



<p class="wp-block-paragraph">This app is 70% written by Claude Opus 4.6 with constant human supervision and intervension. </p>



<p class="wp-block-paragraph">Initally it was planned to be written 90+% by Claude, but I had to jump in and change the direction of deployment mid-way due to the way it has complicated the architecture.</p>
</div></div>
<p><a href="https://1a23.com/works/open-source/holpxay-calculator/">Holpxay Calculator</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2089</post-id>	</item>
		<item>
		<title>Font coverage analyzer</title>
		<link>https://1a23.com/works/open-source/font-coverage-analyzer/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Mon, 12 Jan 2026 16:25:58 +0000</pubDate>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OpenType]]></category>
		<category><![CDATA[React]]></category>
		<guid isPermaLink="false">https://1a23.com/?post_type=open-source&#038;p=2067</guid>

					<description><![CDATA[<img width="1200" height="630" src="https://1a23.com/wp-content/uploads/2026/01/font-coverage.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/01/font-coverage.png 1200w, https://1a23.com/wp-content/uploads/2026/01/font-coverage-300x158.png 300w, https://1a23.com/wp-content/uploads/2026/01/font-coverage-1024x538.png 1024w, https://1a23.com/wp-content/uploads/2026/01/font-coverage-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><p>A web tool to check codepoint / glyph coverages of a font. Capable of checking coverage of the following collections:</p>
<p><a href="https://1a23.com/works/open-source/font-coverage-analyzer/">Font coverage analyzer</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1200" height="630" src="https://1a23.com/wp-content/uploads/2026/01/font-coverage.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2026/01/font-coverage.png 1200w, https://1a23.com/wp-content/uploads/2026/01/font-coverage-300x158.png 300w, https://1a23.com/wp-content/uploads/2026/01/font-coverage-1024x538.png 1024w, https://1a23.com/wp-content/uploads/2026/01/font-coverage-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" />
<p class="wp-block-paragraph">A web tool to check codepoint / glyph coverages of a font. Capable of checking coverage of the following collections:</p>



<ul class="wp-block-list">
<li>Codepoints
<ul class="wp-block-list">
<li>Unicode Blocks</li>



<li>Unicode Script Extensions</li>



<li>China Encodings (GB/T 2312, GB/T 12345, GBK)</li>



<li>China Foundries (<bdo lang="zh-hans" dir="ltr">方正字库</bdo>, <bdo lang="zh-hans" dir="ltr">汉仪字库</bdo>)</li>



<li>China Standards (<bdo lang="zh-hans" dir="ltr">《通用规范汉字表》</bdo>, <bdo lang="zh-hans" dir="ltr">《义务教育语文课程常用字表》</bdo>, <bdo lang="zh-hans" dir="ltr">《现代汉语常用字表》</bdo>, <bdo lang="zh-hans" dir="ltr">《现代汉语通用字表》</bdo>, <bdo lang="zh-hans" dir="ltr">《古籍印刷通用字規範字形表》</bdo>)</li>



<li>Japan Encodings (JIS X 0208, JIS X 0212, JIS X 0213:2004, Shift-JIS)</li>



<li>Japan JIS (<bdo lang="ja" dir="ltr">JIS 第一水準</bdo>, <bdo lang="ja" dir="ltr">JIS 第二水準</bdo>, <bdo lang="ja" dir="ltr">JIS 第三水準</bdo>, <bdo lang="ja" dir="ltr">JIS 第四水準</bdo>)</li>



<li>Japan Kyoiku Kanji (<bdo lang="ja" dir="ltr">学年別漢字配当表</bdo>)</li>



<li>Japan Kanken (<bdo lang="ja" dir="ltr">日本漢字能力検定 級別漢字表</bdo>)</li>



<li>Japan Joyo Kanji (<bdo lang="ja" dir="ltr">常用漢字</bdo>, <bdo lang="ja" dir="ltr">人名用漢字</bdo>)</li>



<li>Taiwan Encodings (Big5)</li>



<li>Taiwan Standards (<bdo lang="zh-hant" dir="ltr">《常用國字標準字體表》</bdo>, <bdo lang="zh-hant" dir="ltr">《次常用國字標準字體表》</bdo>, <bdo lang="zh-hant" dir="ltr">《臺灣客家語常用詞辭典》</bdo>, <bdo lang="zh-hant" dir="ltr">《臺灣閩南語常用詞辭典》</bdo>)</li>



<li>Hong Kong (<bdo lang="zh-hant" dir="ltr">《常用字字形表》</bdo>, <bdo lang="zh-hant" dir="ltr">《香港小學學習字詞表》</bdo>, <bdo lang="zh-hant" dir="ltr">《香港增補字符集》</bdo>, <bdo lang="zh-hant" dir="ltr">《常用香港外字表》</bdo>)</li>



<li>Korean Encodings (Code page 949, KS X 1001)</li>
</ul>
</li>



<li>Glyphs (unstable)
<ul class="wp-block-list">
<li>Adobe Latin</li>



<li>Adobe Greek</li>



<li>Adobe Cyrillic</li>



<li>Adobe Arabic</li>



<li>Adobe CMAP (Adobe CNS1-7, Adobe GB1-6, Adobe Japan1-7, Adobe KR-9, Adobe Manga1-0)</li>



<li>GF Latin</li>



<li>GF Greek</li>



<li>GF Cyrillic</li>



<li>GF Arabic</li>



<li>GF Phonetics</li>



<li>GF TransLatin</li>



<li>JF (<bdo lang="zh-hant" dir="ltr">jf 7000 當務字集</bdo>)</li>
</ul>
</li>
</ul>



<div class="alignwide ghostkit-carousel" data-effect="slide" data-speed="0.2" data-autoplay="4" data-slides-per-view="2" data-centered-slides="true" data-loop="true" data-free-scroll="false" data-show-arrows="true" data-show-bullets="true" data-dynamic-bullets="true" data-gap="15"><div class="ghostkit-carousel-items">
<div class="ghostkit-carousel-slide is-layout-flow wp-block-ghostkit-carousel-slide-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="891" src="https://1a23.com/wp-content/uploads/2026/01/Screenshot-2026-01-11-210307-1024x891.png" alt="" class="wp-image-2068" srcset="https://1a23.com/wp-content/uploads/2026/01/Screenshot-2026-01-11-210307-1024x891.png 1024w, https://1a23.com/wp-content/uploads/2026/01/Screenshot-2026-01-11-210307-300x261.png 300w, https://1a23.com/wp-content/uploads/2026/01/Screenshot-2026-01-11-210307-768x668.png 768w, https://1a23.com/wp-content/uploads/2026/01/Screenshot-2026-01-11-210307-1536x1336.png 1536w, https://1a23.com/wp-content/uploads/2026/01/Screenshot-2026-01-11-210307.png 1949w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2068" /><figcaption class="wp-element-caption">Font coverage check</figcaption></figure>
</div>



<div class="ghostkit-carousel-slide is-layout-flow wp-block-ghostkit-carousel-slide-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="891" src="https://1a23.com/wp-content/uploads/2026/01/image-1-1024x891.png" alt="" class="wp-image-2069" srcset="https://1a23.com/wp-content/uploads/2026/01/image-1-1024x891.png 1024w, https://1a23.com/wp-content/uploads/2026/01/image-1-300x261.png 300w, https://1a23.com/wp-content/uploads/2026/01/image-1-768x668.png 768w, https://1a23.com/wp-content/uploads/2026/01/image-1-1536x1336.png 1536w, https://1a23.com/wp-content/uploads/2026/01/image-1.png 1950w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2069" /><figcaption class="wp-element-caption">View covered and missing codepoints / glyphs</figcaption></figure>
</div>



<div class="ghostkit-carousel-slide is-layout-flow wp-block-ghostkit-carousel-slide-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="891" src="https://1a23.com/wp-content/uploads/2026/01/image-2-1024x891.png" alt="" class="wp-image-2070" srcset="https://1a23.com/wp-content/uploads/2026/01/image-2-1024x891.png 1024w, https://1a23.com/wp-content/uploads/2026/01/image-2-300x261.png 300w, https://1a23.com/wp-content/uploads/2026/01/image-2-768x668.png 768w, https://1a23.com/wp-content/uploads/2026/01/image-2-1536x1336.png 1536w, https://1a23.com/wp-content/uploads/2026/01/image-2.png 1950w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2070" /><figcaption class="wp-element-caption">Composite glyphs from multiple codepoints</figcaption></figure>
</div>



<div class="ghostkit-carousel-slide is-layout-flow wp-block-ghostkit-carousel-slide-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="891" src="https://1a23.com/wp-content/uploads/2026/01/image-3-1024x891.png" alt="" class="wp-image-2071" srcset="https://1a23.com/wp-content/uploads/2026/01/image-3-1024x891.png 1024w, https://1a23.com/wp-content/uploads/2026/01/image-3-300x261.png 300w, https://1a23.com/wp-content/uploads/2026/01/image-3-768x668.png 768w, https://1a23.com/wp-content/uploads/2026/01/image-3-1536x1336.png 1536w, https://1a23.com/wp-content/uploads/2026/01/image-3.png 1950w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2071" /><figcaption class="wp-element-caption">OpenType feature support</figcaption></figure>
</div>



<div class="ghostkit-carousel-slide is-layout-flow wp-block-ghostkit-carousel-slide-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="891" src="https://1a23.com/wp-content/uploads/2026/01/image-4-1024x891.png" alt="" class="wp-image-2072" srcset="https://1a23.com/wp-content/uploads/2026/01/image-4-1024x891.png 1024w, https://1a23.com/wp-content/uploads/2026/01/image-4-300x261.png 300w, https://1a23.com/wp-content/uploads/2026/01/image-4-768x668.png 768w, https://1a23.com/wp-content/uploads/2026/01/image-4-1536x1336.png 1536w, https://1a23.com/wp-content/uploads/2026/01/image-4.png 1950w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2072" /><figcaption class="wp-element-caption">Private Use Area labelling</figcaption></figure>
</div>
</div><div class="ghostkit-carousel-arrow-prev-icon"><svg class="ghostkit-svg-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.7803 17.7803C14.4874 18.0732 14.0126 18.0732 13.7197 17.7803L8.4697 12.5303C8.1768 12.2374 8.1768 11.7626 8.4697 11.4697L13.7197 6.21967C14.0126 5.92678 14.4874 5.92678 14.7803 6.21967C15.0732 6.51256 15.0732 6.98744 14.7803 7.28033L10.0607 12L14.7803 16.7197C15.0732 17.0126 15.0732 17.4874 14.7803 17.7803Z" fill="currentColor"/></svg></div><div class="ghostkit-carousel-arrow-next-icon"><svg class="ghostkit-svg-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M9.21967 6.2197C9.51256 5.9268 9.98744 5.9268 10.2803 6.2197L15.5303 11.4697C15.8232 11.7626 15.8232 12.2374 15.5303 12.5303L10.2803 17.7803C9.98744 18.0732 9.51256 18.0732 9.21967 17.7803C8.92678 17.4874 8.92678 17.0126 9.21967 16.7197L13.9393 12L9.21967 7.2803C8.92678 6.9874 8.92678 6.5126 9.21967 6.2197Z" fill="currentColor"/></svg></div></div>



<p class="wp-block-paragraph"></p>
<p><a href="https://1a23.com/works/open-source/font-coverage-analyzer/">Font coverage analyzer</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2067</post-id>	</item>
		<item>
		<title>Have a wonderful 2026!</title>
		<link>https://1a23.com/works/gallery/have-a-wonderful-2026/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate>
				<guid isPermaLink="false">https://1a23.com/?post_type=gallery&#038;p=2031</guid>

					<description><![CDATA[<img width="675" height="1200" src="https://1a23.com/wp-content/uploads/2025/12/2025-2026.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2025/12/2025-2026.png 675w, https://1a23.com/wp-content/uploads/2025/12/2025-2026-169x300.png 169w, https://1a23.com/wp-content/uploads/2025/12/2025-2026-576x1024.png 576w" sizes="auto, (max-width: 675px) 100vw, 675px" /><p>Photo by Pascal Debrunner on UnsplashTypefaces: Birthstone Bounce, The Nautigal</p>
<p><a href="https://1a23.com/works/gallery/have-a-wonderful-2026/">Have a wonderful 2026!</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="675" height="1200" src="https://1a23.com/wp-content/uploads/2025/12/2025-2026.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2025/12/2025-2026.png 675w, https://1a23.com/wp-content/uploads/2025/12/2025-2026-169x300.png 169w, https://1a23.com/wp-content/uploads/2025/12/2025-2026-576x1024.png 576w" sizes="auto, (max-width: 675px) 100vw, 675px" />
<p class="wp-block-paragraph">Photo by <a href="https://unsplash.com/photos/a-sparkly-golden-star-ornament-on-a-christmas-tree-l8awBh9Ceyg" data-type="link" data-id="https://unsplash.com/photos/a-sparkly-golden-star-ornament-on-a-christmas-tree-l8awBh9Ceyg" target="_blank" rel="noreferrer noopener nofollow">Pascal Debrunner on Unsplash</a><br>Typefaces: <a href="https://fonts.google.com/specimen/Birthstone+Bounce?query=Birthstone+Bounce" data-type="link" data-id="https://fonts.google.com/specimen/Birthstone+Bounce?query=Birthstone+Bounce" target="_blank" rel="noreferrer noopener nofollow">Birthstone Bounce</a>, <a href="https://fonts.google.com/specimen/The+Nautigal?query=The+Nautigal" target="_blank" rel="noreferrer noopener nofollow">The Nautigal</a></p>



<p class="wp-block-paragraph"></p>
<p><a href="https://1a23.com/works/gallery/have-a-wonderful-2026/">Have a wonderful 2026!</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2031</post-id>	</item>
		<item>
		<title>Progress Bar Labels with CSS Anchor Positioning</title>
		<link>https://blog.1a23.com/2025/11/29/progress-bar-labels-with-css-anchor-positioning/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Sat, 29 Nov 2025 04:38:40 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Anchor Positioning]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://blog.1a23.com/?p=17486</guid>

					<description><![CDATA[<img width="1024" height="768" src="https://1a23.com/wp-content/uploads/sites/2/2025/11/image-1024x768.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/sites/2/2025/11/image-1024x768.png 1024w, https://1a23.com/wp-content/uploads/sites/2/2025/11/image-300x225.png 300w, https://1a23.com/wp-content/uploads/sites/2/2025/11/image-768x576.png 768w, https://1a23.com/wp-content/uploads/sites/2/2025/11/image-1536x1152.png 1536w, https://1a23.com/wp-content/uploads/sites/2/2025/11/image.png 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p>Here’s a small but fun use case for CSS Anchor Positioning, using it to keep multiple labels around a progress bar readable, without touching JavaScript. The goal is simple: we have a horizontal progress bar with three labels: one on the left, one on the right, and one that should follow the progress “tip”. We [&#8230;]</p>
<p><a href="https://blog.1a23.com/2025/11/29/progress-bar-labels-with-css-anchor-positioning/">Progress Bar Labels with CSS Anchor Positioning</a> appeared first on <a href="https://blog.1a23.com">1A23 Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1024" height="768" src="https://1a23.com/wp-content/uploads/sites/2/2025/11/image-1024x768.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/sites/2/2025/11/image-1024x768.png 1024w, https://1a23.com/wp-content/uploads/sites/2/2025/11/image-300x225.png 300w, https://1a23.com/wp-content/uploads/sites/2/2025/11/image-768x576.png 768w, https://1a23.com/wp-content/uploads/sites/2/2025/11/image-1536x1152.png 1536w, https://1a23.com/wp-content/uploads/sites/2/2025/11/image.png 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" />
<p class="wp-block-paragraph">Here’s a small but fun use case for CSS Anchor Positioning, using it to keep multiple labels around a progress bar readable, without touching JavaScript.</p>



<p class="wp-block-paragraph">The goal is simple: we have a horizontal progress bar with three labels: one on the left, one on the right, and one that should follow the progress “tip”. We want that center label to sit as close as possible to the current progress,&nbsp;<strong>but never overlap</strong>&nbsp;with either side label.</p>



<p class="wp-block-paragraph">To make things easier, we’ll assume:</p>



<ul class="wp-block-list">
<li>Only the center label needs to move dynamically, the side labels stay at their ends.</li>



<li>The progress bar is wide enough to fit all three labels with some spacing.</li>
</ul>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_raxQQME" src="//codepen.io/anon/embed/raxQQME?height=450&amp;theme-id=1&amp;slug-hash=raxQQME&amp;default-tab=result" height="450" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed raxQQME" title="CodePen Embed raxQQME" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<h2 class="wp-block-heading">Describing the layout as rules</h2>



<p class="wp-block-paragraph">Instead of hard-coding coordinates, it helps to think in terms of a small set of layout rules the browser can try in order.</p>



<p class="wp-block-paragraph">For the center label, the logic can be written as:</p>



<ol class="wp-block-list">
<li>Try placing the center label&nbsp;<strong>to the left</strong>&nbsp;of the progress tip, with a margin.</li>



<li>If that would overlap something, try placing it&nbsp;<strong>to the right</strong>&nbsp;of the progress tip, also with a margin.</li>



<li>If the tip is already too close to another label, place the center label&nbsp;<strong>next to that label instead</strong>, with a wider margin to keep everything readable.</li>
</ol>



<p class="wp-block-paragraph">CSS Anchor Positioning is very good at this style of “try a few positions until one fits” layout. The&nbsp;<code>@position-try</code>&nbsp;at-rules let us declare those strategies explicitly and let the browser pick whichever one does not collide with the container or other constraints.</p>



<p class="wp-block-paragraph">In this example, I use three named anchors:</p>



<ul class="wp-block-list">
<li><code>--prog-bar</code>: the progress bar itself (specifically, its right edge as the “tip”)</li>



<li><code>--left-label</code>: the fixed label on the left</li>



<li><code>--right-label</code>: the fixed label on the right.</li>
</ul>



<p class="wp-block-paragraph">The moving center label is then positioned relative to these anchors.</p>



<h2 class="wp-block-heading" id="defining-position-try-strategies">Defining&nbsp;<code>@position-try</code>&nbsp;strategies</h2>



<p class="wp-block-paragraph">Here are the two position-try rules that implement the logic above:</p>



<div class="wp-block-studio-1a23-syntax-highlight"><div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="css"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="color:#89DDFF;font-style:italic">@position-try</span><span style="color:#BABED8"> --bar-left </span><span style="color:#89DDFF">{</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span class="indent">  </span><span style="color:#FFCB6B">position-area</span><span style="color:#BABED8">: none;</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">right: max(</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span class="indent"><span style="color:#BABED8">    </span></span><span style="color:#BABED8">calc(anchor(--prog-bar right) </span><span style="color:#89DDFF">+</span><span style="color:#BABED8"> var(--container-padding)),</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">5</div></div><div class="code"><span class="indent"><span style="color:#BABED8">    </span></span><span style="color:#BABED8">calc(anchor(--right-label left) </span><span style="color:#89DDFF">+</span><span style="color:#BABED8"> var(--label-gap))</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">6</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">);</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">7</div></div><div class="code"><span class="indent">  </span><span style="color:#FFCB6B">margin-left</span><span style="color:#BABED8">: calc(</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">8</div></div><div class="code"><span class="indent"><span style="color:#BABED8">    </span></span><span style="color:#BABED8">var(--container-padding) </span><span style="color:#89DDFF">+</span><span style="color:#BABED8"> anchor-size(--left-label width) </span><span style="color:#89DDFF">+</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">9</div></div><div class="code"><span class="indent"><span style="color:#BABED8">      </span></span><span style="color:#BABED8">var(--label-gap)</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">10</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">);</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">11</div></div><div class="code"><span style="color:#89DDFF">}</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">12</div></div><div class="code">
</div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">13</div></div><div class="code"><span style="color:#89DDFF;font-style:italic">@position-try</span><span style="color:#BABED8"> --bar-right </span><span style="color:#89DDFF">{</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">14</div></div><div class="code"><span class="indent">  </span><span style="color:#FFCB6B">position-area</span><span style="color:#BABED8">: none;</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">15</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">left: max(</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">16</div></div><div class="code"><span class="indent"><span style="color:#BABED8">    </span></span><span style="color:#BABED8">calc(anchor(--prog-bar right) </span><span style="color:#89DDFF">+</span><span style="color:#BABED8"> var(--container-padding)),</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">17</div></div><div class="code"><span class="indent"><span style="color:#BABED8">    </span></span><span style="color:#BABED8">calc(anchor(--left-label right) </span><span style="color:#89DDFF">+</span><span style="color:#BABED8"> var(--label-gap))</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">18</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">);</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">19</div></div><div class="code"><span class="indent">  </span><span style="color:#FFCB6B">margin-right</span><span style="color:#BABED8">: calc(</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">20</div></div><div class="code"><span class="indent"><span style="color:#BABED8">    </span></span><span style="color:#BABED8">var(--label-gap) </span><span style="color:#89DDFF">+</span><span style="color:#BABED8"> anchor-size(--right-label width) </span><span style="color:#89DDFF">+</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">21</div></div><div class="code"><span class="indent"><span style="color:#BABED8">      </span></span><span style="color:#BABED8">var(--container-padding)</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">22</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">);</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">23</div></div><div class="code"><span style="color:#89DDFF">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="𒅀𓅯𓉩𒁩扮𓁴啹戭院扲马𓉦𠄠啿𒄠𓅯𓉩𒁩扮𓁡陥唺𒁮驮𠔻唠鹲鵧潴ꔠ𖡡𠔨唠唠陣顬阨顮𒁨嵲戭𓁰鱯霭𓁡𓀠鱩𓉨唩唫陶嵲戭𒁣𓉮鹡驮扲陰饤𐙩幧愩啿唠頠ꍡ嵣𐙡鵣𓁯戨𓀭鱩𓉨ꌭ靡ꍥꌠ魥年怠𔐠𓁡戨ꌭ靡ꍥ鰭𒅡帩啿帠𠔻唠陭鱲𐙩ꌭ魥潴頠ꍡ嵣啿唠𔐠𓁡戨頭𐙯陴𐙩𓁥𒄭饡鹤鱮唩唫𐙡鵣𓁯𓄭𠁩嵥戭马𓉦ꌭ靡ꍥ𔔠饩鵴唩𠔫唠唠唠陶嵲戭陬驢扬陧幰啿帠𠔻𠕽畿𒁰鹳鹴𐙯𓈭𖥲戠霭𓁡𓀭鱩𓉨𠄠啿𒄠𓅯𓉩𒁩扮𓁡陥唺𒁮驮𠔻唠马𓉦唺陭嵸啿唠頠ꍡ嵣𐙡鵣𓁯戨𒄭𒁲执院啲鹲鵧年怠𔐠𓁡戨頭𐙯陴𐙩𓁥𒄭饡鹤鱮帩𠔬唠唠陣顬阨顮𒁨嵲戭马𓉦ꌭ靡ꍥ𓀠鱩𓉨唩唫陶嵲戭陬驢扬陧幰𠔩唠瀩啿ꔠ𓁡鹧扮鹲鵧潴頠ꍡ嵣啿唠𔐠𓁡戨ꌭ靡ꍥ鰭𒅡唩唫𐙡鵣𓁯𓄭𠁩嵥戭鹲鵧扴陬驢啬鹷𓉤幨怠啿唠唠𔐠𓁡戨頭𐙯陴𐙩𓁥𒄭饡鹤鱮𠔩唠瀩𠍿"><div></div></button></div></figure></div></div>



<p class="wp-block-paragraph">Conceptually:</p>



<ul class="wp-block-list">
<li><code>--bar-left</code>&nbsp;corresponds to “try to sit just to the&nbsp;<strong>left</strong>&nbsp;of the progress tip”.</li>



<li><code>--bar-right</code>&nbsp;corresponds to “otherwise, sit just to the&nbsp;<strong>right</strong>&nbsp;of the progress tip”.</li>
</ul>



<p class="wp-block-paragraph">The “third rule” (move next to whichever label is closer) is effectively folded into the&nbsp;<code>max()</code>&nbsp;expressions:</p>



<ul class="wp-block-list">
<li>For&nbsp;<code>right</code>&nbsp;/&nbsp;<code>left</code>&nbsp;we take the&nbsp;<strong>maximum</strong>&nbsp;of:
<ul class="wp-block-list">
<li>the tip position plus container padding, and</li>



<li>the neighbouring label plus a label gap.</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">This means:</p>



<ul class="wp-block-list">
<li>If there’s plenty of room, the center label hugs the progress tip.</li>



<li>If the tip is about to collide with a side label, the center label gets pushed away so that it sits beside that label instead, maintaining at least&nbsp;<code>var(--label-gap)</code>&nbsp;of space.</li>
</ul>



<h2 class="wp-block-heading" id="avoiding-overlap-with-anchor-size">Avoiding overlap with&nbsp;<code>anchor-size()</code></h2>



<p class="wp-block-paragraph">The margins are where the overlap-avoidance really happens.</p>



<p class="wp-block-paragraph">Take this line as an example:</p>



<div class="wp-block-studio-1a23-syntax-highlight"><div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="css"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="color:#FFCB6B">margin-left</span><span style="color:#BABED8">: calc(</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">var(--container-padding) </span><span style="color:#89DDFF">+</span><span style="color:#BABED8"> anchor-size(--left-label width) </span><span style="color:#89DDFF">+</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span class="indent"><span style="color:#BABED8">    </span></span><span style="color:#BABED8">var(--label-gap)</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span style="color:#BABED8">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="陭鱲𐙩ꌭ魥潴頠ꍡ嵣啿𔐠𓁡戨頭𐙯陴𐙩𓁥𒄭饡鹤鱮唩唫𐙡鵣𓁯𓄭𠁩嵥戭马𓉦ꌭ靡ꍥ𔔠饩鵴唩𠔫唠唠陶嵲戭陬驢扬陧幰广ᔻ"><div></div></button></div></figure></div></div>



<p class="wp-block-paragraph">Here we:</p>



<ul class="wp-block-list">
<li>Read the&nbsp;<strong>actual width</strong>&nbsp;of the left label via&nbsp;<code>anchor-size(--left-label width)</code>.</li>



<li>Add the container’s padding and a label gap.</li>



<li>Use that as the center label’s margin, so its text always clears the left label by at least that gap.</li>
</ul>



<p class="wp-block-paragraph">In other words, instead of guessing spacing with hard-coded numbers, we attach the spacing directly to the real measured size of the anchors. That’s exactly the kind of thing&nbsp;<code>anchor-size()</code>&nbsp;is designed for.</p>



<p class="wp-block-paragraph">The same idea is used for&nbsp;<code>margin-right</code>&nbsp;with the right label.</p>



<h2 class="wp-block-heading" id="putting-it-together">Putting it together</h2>



<p class="wp-block-paragraph">Once the&nbsp;<code>@position-try</code>&nbsp;rules are defined, the center label simply opts in to them, for example:</p>



<div class="wp-block-studio-1a23-syntax-highlight"><div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="css"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="color:#89DDFF">.</span><span style="color:#FFCB6B">label</span><span style="color:#89DDFF">.</span><span style="color:#FFCB6B">center</span><span style="color:#BABED8"> </span><span style="color:#89DDFF">{</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span class="indent">  </span><span style="color:#B2CCD6">position</span><span style="color:#89DDFF">:</span><span style="color:#BABED8"> absolute</span><span style="color:#89DDFF">;</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span class="indent">  </span><span style="color:#B2CCD6">top</span><span style="color:#89DDFF">:</span><span style="color:#BABED8"> </span><span style="color:#82AAFF">var</span><span style="color:#89DDFF">(</span><span style="color:#BABED8">--container-padding</span><span style="color:#89DDFF">);</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">position-try</span><span style="color:#89DDFF">:</span><span style="color:#BABED8"> --bar-left</span><span style="color:#89DDFF">,</span><span style="color:#BABED8"> --bar-right</span><span style="color:#89DDFF">;</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">5</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">position-anchor</span><span style="color:#89DDFF">:</span><span style="color:#BABED8"> --prog-bar</span><span style="color:#89DDFF">;</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">6</div></div><div class="code"><span class="indent"><span style="color:#BABED8">  </span></span><span style="color:#BABED8">position-area</span><span style="color:#89DDFF">:</span><span style="color:#BABED8"> left</span><span style="color:#89DDFF">;</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">7</div></div><div class="code"><span style="color:#89DDFF">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="ꌮ靡ꍥ頮𐙥驴啲𠕻唠𒁰鹳鹴𐙯唺靡𒁳𓍬驴𠔻唠𒁴潰𔐠𓁡戨頭𐙯陴𐙩𓁥𒄭饡鹤鱮瀩啿𒄠𓅯𓉩𒁩扮𓁴潹戠霭𓁡ꌭ魥慴戠霭𓁡𓀭鱩𓉨𠔻唠𒁰鹳鹴𐙯阭顮𒁨潲戠𒄭𒁲执院灲啿𒄠𓅯𓉩𒁩扮𓁡陥唺马𓉦𠔻ᕽ"><div></div></button></div></figure></div></div>



<p class="wp-block-paragraph">The browser will then:</p>



<ol class="wp-block-list">
<li>Try&nbsp;<code>--bar-left</code>.</li>



<li>If that would cause an overlap or violate constraints, fall back to&nbsp;<code>--bar-right</code>.</li>
</ol>



<p class="wp-block-paragraph">Combined with the&nbsp;<code>max()</code>&nbsp;insets and&nbsp;<code>anchor-size()</code>-based margins, that’s enough to:</p>



<ul class="wp-block-list">
<li>Keep the center label near the progress tip,</li>



<li>Prevent it from overlapping either side label,</li>



<li>Adjust spacing automatically if label text length changes,</li>



<li>Do all of this with&nbsp;<strong>zero JavaScript</strong>.</li>
</ul>



<p class="wp-block-paragraph">The full implementation – including the anchors and layout container – is in the CodePen embed above.</p>



<h2 class="wp-block-heading" id="browser-support">Browser support</h2>



<p class="wp-block-paragraph">CSS Anchor Positioning is still relatively new, and support is rolling out across browsers. Before using this technique in production, it’s worth checking current support status or adding a progressive enhancement fallback.</p>



<p class="wp-block-paragraph">You can use the Baseline widget below to see the latest support details for anchor positioning across engines, and <a href="https://web.dev/blog/upvote-features?hl=en">upvot<strong>e</strong> the feature you want to see become interoperable across major browsers</a>:</p>



<script src="https://cdn.jsdelivr.net/npm/baseline-status@1/baseline-status.min.js" type="module"></script>
<baseline-status featureId="anchor-positioning"></baseline-status>



<p class="wp-block-paragraph"></p>
<p><a href="https://blog.1a23.com/2025/11/29/progress-bar-labels-with-css-anchor-positioning/">Progress Bar Labels with CSS Anchor Positioning</a> appeared first on <a href="https://blog.1a23.com">1A23 Blog</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17486</post-id>	</item>
		<item>
		<title>TRMNL recipies</title>
		<link>https://1a23.com/works/open-source/trmnl-recipies/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Sat, 18 Oct 2025 21:52:50 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://1a23.com/?post_type=open-source&#038;p=1948</guid>

					<description><![CDATA[<img width="1280" height="800" src="https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light.png 1280w, https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light-300x188.png 300w, https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light-1024x640.png 1024w, https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light-768x480.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><p>A bundle of recipes I wrote for TRMNL, an e-ink dashboard display. Wikipedia Article of the Day A TRMNL plugin that fetches and displays the Wikipedia article of the day in multiple languages. Random Unicode A random Unicode codepoint on each refresh. Data powered by codepoints.net. Random MDN Article A random MDN Web article on [&#8230;]</p>
<p><a href="https://1a23.com/works/open-source/trmnl-recipies/">TRMNL recipies</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1280" height="800" src="https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light.png 1280w, https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light-300x188.png 300w, https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light-1024x640.png 1024w, https://1a23.com/wp-content/uploads/2025/10/array-white-light-on-light-768x480.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p class="wp-block-paragraph">A bundle of recipes I wrote for <a href="https://usetrmnl.com/">TRMNL</a>, an e-ink dashboard display.</p>



<div class="wp-block-group alignwide ghostkit-custom-Z1BpNIh is-layout-grid wp-container-core-group-is-layout-64bfa414 wp-block-group-is-layout-grid" style="margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70);padding-top:0;padding-bottom:0">
<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Wikipedia Article of the Day</h2>



<p class="wp-block-paragraph">A TRMNL plugin that fetches and displays the Wikipedia article of the day in multiple languages.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-wiki1" href="https://github.com/blueset/trmnl-recipes/blob/master/wikipedia-article-of-the-day/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-wiki2" href="https://usetrmnl.com/recipes/148054" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://1a23.com/wp-content/uploads/2025/10/image-1-1024x614.png" alt="" class="wp-image-1951" srcset="https://1a23.com/wp-content/uploads/2025/10/image-1-1024x614.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-1-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-1-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-1-1536x922.png 1536w, https://1a23.com/wp-content/uploads/2025/10/image-1.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="1951" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Random Unicode</h2>



<p class="wp-block-paragraph">A random Unicode codepoint on each refresh. Data powered by <a href="https://codepoints.net/">codepoints.net</a>.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-unicode1" href="https://github.com/blueset/trmnl-recipes/blob/master/random-unicode/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-unicode2" href="https://usetrmnl.com/recipes/151050" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://1a23.com/wp-content/uploads/2025/10/image-2-1024x614.png" alt="" class="wp-image-1952" srcset="https://1a23.com/wp-content/uploads/2025/10/image-2-1024x614.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-2-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-2-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-2-1536x922.png 1536w, https://1a23.com/wp-content/uploads/2025/10/image-2.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="1952" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Random MDN Article</h2>



<p class="wp-block-paragraph">A random <a href="https://developer.mozilla.org/">MDN</a> Web article on each refresh.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-mdn1" href="https://github.com/blueset/trmnl-recipes/blob/master/random-mdn-article/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-mdn2" href="https://usetrmnl.com/recipes/153731" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://1a23.com/wp-content/uploads/2025/10/image-3-1024x614.png" alt="" class="wp-image-1953" srcset="https://1a23.com/wp-content/uploads/2025/10/image-3-1024x614.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-3-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-3-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-3-1536x922.png 1536w, https://1a23.com/wp-content/uploads/2025/10/image-3.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="1953" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">World clock</h2>



<p class="wp-block-paragraph">A digital world clock shows up to 7 time zones. Inspired by <a href="https://www.worldtimebuddy.com/">World Time Buddy</a> and <em>Windows 11 World Clock</em>.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-clock1" href="https://github.com/blueset/trmnl-recipes/blob/master/world-clock/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-clock2" href="https://usetrmnl.com/recipes/153664" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://1a23.com/wp-content/uploads/2025/10/image-4-1024x614.png" alt="" class="wp-image-1954" srcset="https://1a23.com/wp-content/uploads/2025/10/image-4-1024x614.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-4-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-4-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-4-1536x922.png 1536w, https://1a23.com/wp-content/uploads/2025/10/image-4.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="1954" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Lyricova Quote</h2>



<p class="wp-block-paragraph">Show a random quote from <a href="https://lyricova.1a23.studio/">Lyricova</a> on each refresh.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-lyricova1" href="https://github.com/blueset/trmnl-recipes/blob/master/lyricova-quote/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-lyricova2" href="https://usetrmnl.com/recipes/150439" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="480" src="https://1a23.com/wp-content/uploads/2025/10/image-5.png" alt="" class="wp-image-1955" srcset="https://1a23.com/wp-content/uploads/2025/10/image-5.png 800w, https://1a23.com/wp-content/uploads/2025/10/image-5-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-5-768x461.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" data-mwl-img-id="1955" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Random Zi</h2>



<p class="wp-block-paragraph">A random CJKV ideograph with pronunciations, definitions, and regional glyphs on each refresh. Data powered by <a href="https://zi.tools">zi.tools 字統网</a>.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-zi1" href="https://github.com/blueset/trmnl-recipes/blob/master/random-zi/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-zi2" href="https://usetrmnl.com/recipes/156095" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://1a23.com/wp-content/uploads/2025/10/image-6-1024x614.png" alt="" class="wp-image-1956" srcset="https://1a23.com/wp-content/uploads/2025/10/image-6-1024x614.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-6-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-6-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-6-1536x922.png 1536w, https://1a23.com/wp-content/uploads/2025/10/image-6.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="1956" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Random Google Fonts</h2>



<p class="wp-block-paragraph">A random typeface from <a href="https://fonts.google.com/">Google Fonts</a> on each refresh.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-fonts1" href="https://github.com/blueset/trmnl-recipes/blob/master/random-google-fonts/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-fonts2" href="https://usetrmnl.com/recipes/163790" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://1a23.com/wp-content/uploads/2025/10/image-7-1024x614.png" alt="" class="wp-image-1957" srcset="https://1a23.com/wp-content/uploads/2025/10/image-7-1024x614.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-7-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-7-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-7-1536x922.png 1536w, https://1a23.com/wp-content/uploads/2025/10/image-7.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="1957" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Public Recipe Stats</h2>



<p class="wp-block-paragraph">Shows connection statistics of public recipes. You can choose to show the latest, search for keywords, show your own recipes, or show selected recipe IDs. Data powered by <a href="https://docs.usetrmnl.com/go/public-api/recipes-api">TRMNL Recipes API</a>.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-recipestats1" href="https://github.com/blueset/trmnl-recipes/blob/master/public-recipe-stats/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-recipestats2" href="https://usetrmnl.com/recipes/170970" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://1a23.com/wp-content/uploads/2025/10/image-8-1024x614.png" alt="" class="wp-image-2058" srcset="https://1a23.com/wp-content/uploads/2025/10/image-8-1024x614.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-8-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-8-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-8-1536x922.png 1536w, https://1a23.com/wp-content/uploads/2025/10/image-8.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2058" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Tatoeba</h2>



<p class="wp-block-paragraph">A random sentence in your chosen languages with translations. Data powered by <a href="https://tatoeba.org/">Tatoeba</a>.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-tatoeba1" href="https://github.com/blueset/trmnl-recipes/blob/master/tatoeba/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-tatoeba2" href="https://usetrmnl.com/recipes/177718" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://1a23.com/wp-content/uploads/2025/10/image-9-1024x614.png" alt="" class="wp-image-2059" srcset="https://1a23.com/wp-content/uploads/2025/10/image-9-1024x614.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-9-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-9-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-9-1536x922.png 1536w, https://1a23.com/wp-content/uploads/2025/10/image-9.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2059" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Slickdeals Frontpage</h2>



<p class="wp-block-paragraph">Slickdeals Frontpage and Popular deals. Data from Slickdeals RSS feed.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-slickdeals1" href="https://github.com/blueset/trmnl-recipes/blob/master/slickdeals/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-slickdeals2" href="https://usetrmnl.com/recipes/184875" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="615" src="https://1a23.com/wp-content/uploads/2025/10/image-10-1024x615.png" alt="" class="wp-image-2060" srcset="https://1a23.com/wp-content/uploads/2025/10/image-10-1024x615.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-10-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-10-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-10.png 1411w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2060" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Word Clock 日本語</h2>



<p class="wp-block-paragraph">Word clock in Japanese. Supports 24-hour and 12-hour formats, with a maximum display precision of 5 minutes (depending on recipe and device update frequency).</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-wordclockja1" href="https://github.com/blueset/trmnl-recipes/blob/master/word-clock-ja/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-wordclockja2" href="https://usetrmnl.com/recipes/187661" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="615" src="https://1a23.com/wp-content/uploads/2025/10/image-11-1024x615.png" alt="" class="wp-image-2061" srcset="https://1a23.com/wp-content/uploads/2025/10/image-11-1024x615.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-11-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-11-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-11.png 1411w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2061" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Word Clock 中文</h2>



<p class="wp-block-paragraph">Word Clock in Chinese. Supports 24-hour and 12-hour formats, as well as Simplified and Traditional Chinese. The highest precision is 5 minutes (determined by the plugin and device refresh rate).</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-wordclockzh1" href="https://github.com/blueset/trmnl-recipes/blob/master/word-clock-zh/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-wordclockzh2" href="https://usetrmnl.com/recipes/187631" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="615" src="https://1a23.com/wp-content/uploads/2025/10/image-12-1024x615.png" alt="" class="wp-image-2062" srcset="https://1a23.com/wp-content/uploads/2025/10/image-12-1024x615.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-12-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-12-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-12.png 1411w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2062" /></figure>
</div>



<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Sunrise and Sunset Chart</h2>



<p class="wp-block-paragraph">Sunrise and sunset time with a daily and yearly chart.</p>



<div class="ghostkit-button-wrapper ghostkit-button-wrapper-gap-sm"><div class="ghostkit-button-wrapper-inner">
<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-sunchart1" href="https://github.com/blueset/trmnl-recipes/blob/master/sun-chart/README.md" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Learn More</span></a>



<a class="ghostkit-button ghostkit-button-xs ghostkit-custom-sunchart2" href="https://usetrmnl.com/recipes/195274" target="_blank" rel="noreferrer noopener"><span class="ghostkit-button-text">Install</span></a>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="615" src="https://1a23.com/wp-content/uploads/2025/10/image-13-1024x615.png" alt="" class="wp-image-2063" srcset="https://1a23.com/wp-content/uploads/2025/10/image-13-1024x615.png 1024w, https://1a23.com/wp-content/uploads/2025/10/image-13-300x180.png 300w, https://1a23.com/wp-content/uploads/2025/10/image-13-768x461.png 768w, https://1a23.com/wp-content/uploads/2025/10/image-13.png 1411w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="2063" /></figure>
</div>
</div>
<p><a href="https://1a23.com/works/open-source/trmnl-recipies/">TRMNL recipies</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1948</post-id>	</item>
		<item>
		<title>Rotated Background Patterns in CSS with SVG</title>
		<link>https://blog.1a23.com/2025/03/06/rotated-background-patterns-in-css-with-svg/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Thu, 06 Mar 2025 21:18:49 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://blog.1a23.com/?p=17403</guid>

					<description><![CDATA[<img width="1024" height="768" src="https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-1024x768.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-1024x768.png 1024w, https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-300x225.png 300w, https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-768x576.png 768w, https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-1536x1152.png 1536w, https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1.png 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p>While working on the WordPress theme Tìtsyul Amip Twenty Twenty-Five, a need arose for a more flexible way to implement rotated background patterns in CSS. Existing methods often involve trade-offs, and this exploration led to a technique leveraging the power of SVG.</p>
<p><a href="https://blog.1a23.com/2025/03/06/rotated-background-patterns-in-css-with-svg/">Rotated Background Patterns in CSS with SVG</a> appeared first on <a href="https://blog.1a23.com">1A23 Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1024" height="768" src="https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-1024x768.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-1024x768.png 1024w, https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-300x225.png 300w, https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-768x576.png 768w, https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1-1536x1152.png 1536w, https://1a23.com/wp-content/uploads/sites/2/2025/03/fi-pattern-1.png 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" />
<p class="wp-block-paragraph">While working on the WordPress theme <a href="https://1a23.com/works/design/titsyul-amip-twenty-twenty-five/">Tìtsyul Amip Twenty Twenty-Five</a>, a need arose for a more flexible way to implement rotated background patterns in CSS. Existing methods often involve trade-offs, and this exploration led to a technique leveraging the power of SVG.</p>



<h2 class="wp-block-heading" id="existing-approaches-and-their-limitations">Existing Approaches and Their Limitations</h2>



<p class="wp-block-paragraph">Traditionally, achieving rotated background images in CSS has involved several workarounds, each with its own set of challenges:</p>



<ul class="wp-block-list">
<li><strong>CSS Transforms:</strong> Using the <code>transform: rotate()</code> property. This rotates the entire element, including its content, which is often not the desired outcome.</li>



<li><strong>Pseudo-elements:</strong> Employing <code>::before</code> or <code>::after</code> pseudo-elements to create a rotated background. While this allows rotating the background independently of the content, it can be complex to manage sizing and positioning. Additionally, if the <code>html</code> or <code>body</code> elements have a background color, pseudo-elements with a negative <code>z-index</code> may fall behind them.</li>



<li><strong>Pre-rotated Images:</strong> Rotating the image using image editing software and then using the rotated image as the background. This is impractical for seamless patterns in most rotation angles or when dynamic canvas size is required.</li>
</ul>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper alignwide"><iframe id="cp_embed_azbWGPq" src="//codepen.io/anon/embed/azbWGPq?height=475&amp;theme-id=dark&amp;slug-hash=azbWGPq&amp;default-tab=result" height="475" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed azbWGPq" title="CodePen Embed azbWGPq" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<h2 class="wp-block-heading" id="the-svg-pattern-technique">The SVG Pattern Technique</h2>



<p class="wp-block-paragraph">Building on these insights, let’s now explore a method that leverages SVG to achieve rotated background patterns—a solution that delivers both flexibility and precise control.</p>



<p class="wp-block-paragraph">At the core of this approach is the SVG <code>&lt;pattern></code> feature, a versatile tool that enables the creation of seamless, repeating background patterns. The <code>&lt;pattern></code> element defines a tileable area that can be used as a fill for other SVG shapes, allowing for intricate and scalable designs. By leveraging attributes such as <code>patternTransform</code>, you can easily manipulate these patterns with transformations like rotation, scaling, and translation, making it an ideal choice for dynamic and responsive backgrounds.</p>



<p class="wp-block-paragraph"><strong>Draw the Pattern Using SVG</strong> <mark style="background-color:rgba(0, 0, 0, 0);color:#00000000" class="has-inline-color">⸻</mark> Begin by creating the desired pattern using SVG elements. This can include vector graphics or embedded bitmaps.</p>



<div class="wp-block-studio-1a23-syntax-highlight"><div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="xml"><code><div class="ec-line"><div class="code"><span style="color:#89DDFF">&lt;</span><span style="color:#F07178">polygon</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">points</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">0,0 2,5 0,10 5,8 10,10 8,5 10,0 5,2</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> /&gt;</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="𒄼ꍯ鱹𐙯𒄠鹯𓉮牳攢攬朠樬攠昬唰愵唸攱昬唰愸唵攱攬樠本唢猯"><div></div></button></div></figure></div></div>



<p class="wp-block-paragraph"><strong>Wrap in a <code>&lt;pattern&gt;</code> Definition</strong> <mark style="background-color:rgba(0, 0, 0, 0);color:#00000000" class="has-inline-color">⸻</mark> Encapsulate the pattern within a <code>&lt;pattern&gt;</code> element inside the <code>&lt;defs&gt;</code> section of the SVG, specify the dimensions for the pattern, and use the <code>patternTransform</code> attribute to apply transformations, such as rotation.</p>



<div class="wp-block-studio-1a23-syntax-highlight"><div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="xml" class="wrap" style="--ecMaxLine:104ch"><code><div class="ec-line highlight ins"><div class="code"><span style="color:#89DDFF">&lt;</span><span style="color:#f2868c">defs</span><span style="color:#89DDFF">&gt;</span></div></div><div class="ec-line highlight ins" style="--ecIndent:2ch"><div class="code"><span class="indent">  </span><span style="color:#89DDFF">&lt;</span><span style="color:#f2868c">pattern</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">id</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">star</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">width</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">10</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">height</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">10</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">patternUnits</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">userSpaceOnUse</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">patternTransform</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">rotate(20)</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">&gt;</span></div></div><div class="ec-line" style="--ecIndent:4ch"><div class="code"><span class="indent">    </span><span style="color:#89DDFF">&lt;</span><span style="color:#F07178">polygon</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">points</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">0,0 2,5 0,10 5,8 10,10 8,5 10,0 5,2</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> /&gt;</span></div></div><div class="ec-line highlight ins" style="--ecIndent:2ch"><div class="code"><span class="indent">  </span><span style="color:#89DDFF">&lt;/</span><span style="color:#f2868c">pattern</span><span style="color:#89DDFF">&gt;</span></div></div><div class="ec-line highlight ins"><div class="code"><span style="color:#89DDFF">&lt;/</span><span style="color:#f2868c">defs</span><span style="color:#89DDFF">&gt;</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="餼魥獳啿焠陰𓉴𓁥啮饩圽𓉳𓁡唢鹷𓉤牨昢地鴠鹥鵧牴昢地𒄠𓉡驴𐙲𐙕𓉩牳𓌢驳衲陰驣𐙏𓅕坥𒄠𓉡驴𐙲𓁔𐙡魳𓁯牭𓀢𓉯𓉡嵥攲圩𠔾唠唠𒄼ꍯ鱹𐙯𒄠鹯𓉮牳攢攬朠樬攠昬唰愵唸攱昬唰愸唵攱攬樠本唢猯啿焠𒄯𓉡驴𐙲𠔾搼驤𓅦ᔾ"><div></div></button></div></figure></div></div>



<p class="wp-block-paragraph"><strong>Create the Main SVG</strong> <mark style="background-color:rgba(0, 0, 0, 0);color:#00000000" class="has-inline-color">⸻</mark> Create a new SVG element without a <code>viewBox</code> attribute. Set the <code>width</code> and <code>height</code> to <code>100%</code> to ensure it covers the entire area of the element. Then add a <code>&lt;rect&gt;</code> element to cover the entire SVG area, and set its <code>fill</code> attribute to reference the pattern defined in step 2.</p>



<div class="wp-block-studio-1a23-syntax-highlight"><div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="xml" class="wrap" style="--ecMaxLine:106ch"><code><div class="ec-line highlight ins"><div class="code"><span style="color:#89DDFF">&lt;</span><span style="color:#f2868c">svg</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">xmlns</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">http://www.w3.org/2000/svg</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">width</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">100%</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">height</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">100%</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">&gt;</span></div></div><div class="ec-line" style="--ecIndent:2ch"><div class="code"><span class="indent">  </span><span style="color:#89DDFF">&lt;</span><span style="color:#F07178">defs</span><span style="color:#89DDFF">&gt;</span></div></div><div class="ec-line" style="--ecIndent:4ch"><div class="code"><span class="indent">    </span><span style="color:#89DDFF">&lt;</span><span style="color:#F07178">pattern</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">id</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">star</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">width</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">10</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">height</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">10</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">patternUnits</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">userSpaceOnUse</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">patternTransform</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">rotate(20)</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">&gt;</span></div></div><div class="ec-line" style="--ecIndent:6ch"><div class="code"><span class="indent">      </span><span style="color:#89DDFF">&lt;</span><span style="color:#F07178">polygon</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">points</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">0,0 2,5 0,10 5,8 10,10 8,5 10,0 5,2</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> /&gt;</span></div></div><div class="ec-line" style="--ecIndent:4ch"><div class="code"><span class="indent">    </span><span style="color:#89DDFF">&lt;/</span><span style="color:#F07178">pattern</span><span style="color:#89DDFF">&gt;</span></div></div><div class="ec-line" style="--ecIndent:2ch"><div class="code"><span class="indent">  </span><span style="color:#89DDFF">&lt;/</span><span style="color:#F07178">defs</span><span style="color:#89DDFF">&gt;</span></div></div><div class="ec-line highlight ins" style="--ecIndent:2ch"><div class="code"><span class="indent">  </span><span style="color:#89DDFF">&lt;</span><span style="color:#f2868c">rect</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">width</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">100%</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">height</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">100%</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> </span><span style="color:#C792EA">fill</span><span style="color:#89DDFF">=</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">url(#star)</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF"> /&gt;</span></div></div><div class="ec-line highlight ins"><div class="code"><span style="color:#89DDFF">&lt;/</span><span style="color:#f2868c">svg</span><span style="color:#89DDFF">&gt;</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="𓄼鱶𖠠ꍭ𓅮圽𓉨𒅴携𔔯𔕷𔔮挳𓁯摧攲攰𓄯鱶唢鹷𓉤牨昢攰圥鴠鹥鵧牴昢攰圥𠔾唠餼魥獳啿唠焠陰𓉴𓁥啮饩圽𓉳𓁡唢鹷𓉤牨昢地鴠鹥鵧牴昢地𒄠𓉡驴𐙲𐙕𓉩牳𓌢驳衲陰驣𐙏𓅕坥𒄠𓉡驴𐙲𓁔𐙡魳𓁯牭𓀢𓉯𓉡嵥攲圩𠔾唠唠唠𒄼ꍯ鱹𐙯𒄠鹯𓉮牳攢攬朠樬攠昬唰愵唸攱昬唰愸唵攱攬樠本唢猯啿唠焠𒄯𓉡驴𐙲𠔾唠搼驤𓅦𠔾唠𓀼顥啴鹷𓉤牨昢攰圥鴠鹥鵧牴昢攰圥鬠ꍩ牬𓌢ꍲ堨𓉳𓁡圩搠𠔾搼𔑳獧"><div></div></button></div></figure></div></div>



<p class="wp-block-paragraph"><strong>Encode and Use in CSS</strong> <mark style="background-color:rgba(0, 0, 0, 0);color:#00000000" class="has-inline-color">⸻</mark> Encode the SVG as a data URL. Use the data URL as the <code>background-image</code> in your CSS.</p>



<div class="wp-block-studio-1a23-syntax-highlight"><div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="css" class="wrap" style="--ecMaxLine:396ch"><code><div class="ec-line"><div class="code"><span style="color:#FFCB6B">div</span><span style="color:#BABED8"> </span><span style="color:#89DDFF">{</span></div></div><div class="ec-line" style="--ecIndent:2ch"><div class="code"><span class="indent">  </span><span style="color:#B2CCD6">background-image</span><span style="color:#89DDFF">:</span><span style="color:#BABED8"> </span><span style="color:#82AAFF">url</span><span style="color:#89DDFF">(</span><span style="color:#89DDFF">"</span><span style="color:#C3E88D">data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Cdefs%3E%3Cpattern id='star' width='10' height='10' patternUnits='userSpaceOnUse' patternTransform='rotate(20)'%3E%3Cpolygon points='0,0 2,5 0,10 5,8 10,10 8,5 10,0 5,2' /%3E%3C/pattern%3E%3C/defs%3E%3Crect width='100%25' height='100%25' fill='url(%23star)' /%3E%3C/svg%3E</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">);</span></div></div><div class="ec-line"><div class="code"><span style="color:#89DDFF">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="鹤啶𠕻唠院ꉣ𓁧𓍯饮鸭陭驧唺𓁵嵬餢𓉡潡ꕩ鱡摥𔑳恧ꕸ慬栥𓅃鱶𖠠ꍭ𓅮尽𓉨𒅴携𔔯𔕷𔔮挳𓁯摧攲攰𓄯鱶唧鹷𓉤牨昧攰朥尵鴠鹥鵧牴昧攰朥尵栥婅砳驤𓅦栥婅砳陰𓉴𓁥啮饩尽𓉳𓁡唧鹷𓉤牨昧尰鴠鹥鵧牴昧尰𒄠𓉡驴𐙲𐙕𓉩牳𓌧驳衲陰驣𐙏𓅕履𒄠𓉡驴𐙲𓁔𐙡魳𓁯牭𓀧𓉯𓉡嵥攲尩栥婅砳𒁰𖥬𒁧啮𒁰𐙩𓅴尽愰唰愲唵愰攱樠洬映愰攱洠樬映愰唰愵尲搠栥婅砳𒄯𓉡驴𐙲栥婅砳餯魥婳稳栥𓁃顥啴鹷𓉤牨昧攰朥尵鴠鹥鵧牴昧攰朥尵鬠ꍩ牬𓌧ꍲ娨栲𓉳𓁡尩搠栥婅砳𓄯鱶栥坅瀩𠍿"><div></div></button></div></figure></div></div>



<p class="wp-block-paragraph">Using this technique, the pattern background can be transformed on its own, while still behave like any other CSS background to enjoy other features like background stacking and blend mode settings.</p>



<div class="wp-block-group alignfull ghostkit-custom-1bz1qp has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="margin-top:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--60)">
<p class="has-text-align-center ghostkit-custom-1yLyIV has-secondary-background-color has-background wp-block-paragraph">This is an example of how a background using this technique could look like.</p>
</div>



<style>
.ghostkit-custom-1bz1qp {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Cdefs%3E%3Cpattern id='pattern' width='230' height='115' patternUnits='userSpaceOnUse' patternTransform='rotate(25)'%3E%3Cpath d='M115 49.9861H215V85.3316C215 93.6378 208.64 100 200.336 100H129.664C121.36 100 115 93.6378 115 85.3316V49.9861Z' fill='white'/%3E%3Cpath d='M135.265 44.3834C134.158 43.2753 132.746 42.5206 131.21 42.2149C129.673 41.9092 128.08 42.0661 126.633 42.6658C125.186 43.2655 123.948 44.2811 123.078 45.5841C122.208 46.8871 121.743 48.419 121.743 49.9861C121.743 51.5532 122.208 53.0851 123.078 54.3881C123.948 55.6911 125.186 56.7067 126.633 57.3064C128.08 57.9061 129.673 58.063 131.21 57.7573C132.746 57.4516 134.158 56.6969 135.265 55.5888H194.734C195.842 56.6969 197.254 57.4516 198.79 57.7573C200.327 58.063 201.92 57.9061 203.367 57.3064C204.814 56.7067 206.052 55.6911 206.922 54.3881C207.792 53.0851 208.257 51.5532 208.257 49.9861C208.257 48.419 207.792 46.8871 206.922 45.5841C206.052 44.2811 204.814 43.2655 203.367 42.6658C201.92 42.0661 200.327 41.9092 198.79 42.2149C197.254 42.5206 195.842 43.2753 194.734 44.3834H135.265Z' fill='%23FFB13B'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M124.063 36.4599C126.738 35.3518 129.681 35.0619 132.52 35.6268C134.326 35.9861 136.038 36.6811 137.572 37.6662H192.428C193.962 36.6811 195.674 35.9861 197.48 35.6268C200.319 35.0619 203.262 35.3518 205.937 36.4599C208.611 37.5681 210.897 39.4446 212.506 41.8522C214.114 44.2599 214.972 47.0905 214.972 49.9861C214.972 52.8817 214.114 55.7123 212.506 58.12C210.897 60.5276 208.611 62.4041 205.937 63.5123C203.262 64.6204 200.319 64.9103 197.48 64.3454C195.674 63.9861 193.962 63.2911 192.428 62.306H137.572C136.038 63.2911 134.326 63.9861 132.52 64.3454C129.681 64.9103 126.738 64.6204 124.063 63.5123C121.389 62.4041 119.103 60.5276 117.494 58.12C115.886 55.7124 115.028 52.8817 115.028 49.9861C115.028 47.0905 115.886 44.2599 117.494 41.8522C119.103 39.4446 121.389 37.5681 124.063 36.4599ZM129.9 48.803C129.666 48.7565 129.423 48.7804 129.203 48.8717C128.982 48.963 128.794 49.1176 128.662 49.3159C128.529 49.5143 128.458 49.7475 128.458 49.9861C128.458 50.2247 128.529 50.4579 128.662 50.6563C128.794 50.8546 128.982 51.0092 129.203 51.1006C129.423 51.1919 129.666 51.2157 129.9 51.1692C130.134 51.1227 130.348 51.0078 130.517 50.8391L131.37 49.9861L130.517 49.1331C130.348 48.9644 130.134 48.8496 129.9 48.803ZM198.63 49.9861L199.483 50.8391C199.652 51.0078 199.866 51.1227 200.1 51.1692C200.334 51.2157 200.577 51.1919 200.797 51.1006C201.018 51.0092 201.206 50.8546 201.338 50.6563C201.471 50.4579 201.542 50.2247 201.542 49.9861C201.542 49.7475 201.471 49.5143 201.338 49.3159C201.206 49.1176 201.018 48.963 200.797 48.8717C200.577 48.7804 200.334 48.7565 200.1 48.803C199.866 48.8496 199.652 48.9644 199.483 49.1331L198.63 49.9861Z' fill='white'/%3E%3Cpath d='M147.935 24.9931C147.935 23.426 147.471 21.894 146.6 20.591C145.73 19.288 144.493 18.2725 143.045 17.6728C141.598 17.0731 140.005 16.9161 138.469 17.2219C136.932 17.5276 135.521 18.2822 134.413 19.3903C133.305 20.4985 132.55 21.9103 132.245 23.4473C131.939 24.9843 132.096 26.5774 132.696 28.0252C133.295 29.473 134.31 30.7105 135.613 31.5812C136.916 32.4518 138.447 32.9165 140.014 32.9165L182.065 74.9792C182.065 76.5463 182.529 78.0782 183.4 79.3812C184.27 80.6842 185.507 81.6997 186.955 82.2995C188.402 82.8992 189.995 83.0561 191.531 82.7503C193.068 82.4446 194.479 81.69 195.587 80.5819C196.695 79.4738 197.449 78.0619 197.755 76.5249C198.061 74.9879 197.904 73.3948 197.304 71.947C196.705 70.4992 195.69 69.2617 194.387 68.3911C193.084 67.5204 191.553 67.0557 189.986 67.0557L147.935 24.9931Z' fill='%23FFB13B'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M145.615 11.4669C148.29 12.575 150.575 14.4515 152.184 16.8592C153.207 18.3906 153.926 20.0932 154.315 21.8748L193.103 60.6745C194.885 61.0628 196.587 61.7827 198.118 62.8059C200.525 64.4147 202.401 66.7012 203.508 69.3764C204.616 72.0516 204.906 74.9954 204.341 77.8354C203.777 80.6754 202.383 83.2841 200.336 85.3316C198.289 87.3791 195.681 88.7735 192.842 89.3384C190.002 89.9033 187.059 89.6134 184.385 88.5053C181.71 87.3972 179.425 85.5207 177.816 83.113C176.793 81.5816 176.074 79.879 175.685 78.0974L136.896 39.2977C135.115 38.9094 133.413 38.1896 131.882 37.1663C129.475 35.5575 127.599 33.271 126.491 30.5958C125.384 27.9206 125.094 24.9768 125.659 22.1368C126.223 19.2968 127.617 16.6881 129.664 14.6406C131.711 12.5931 134.319 11.1987 137.158 10.6338C139.998 10.0689 142.941 10.3588 145.615 11.4669ZM141.017 24.3229C140.884 24.1245 140.696 23.9699 140.475 23.8786C140.255 23.7873 140.013 23.7634 139.779 23.81C139.545 23.8565 139.33 23.9714 139.161 24.1401C138.993 24.3088 138.878 24.5237 138.831 24.7577C138.785 24.9917 138.808 25.2343 138.9 25.4547C138.991 25.6751 139.146 25.8635 139.344 25.996C139.542 26.1286 139.775 26.1993 140.014 26.1993L141.22 26.1993L141.22 24.9931C141.22 24.7545 141.149 24.5213 141.017 24.3229ZM188.78 73.7729L188.78 74.9791C188.78 75.2177 188.851 75.4509 188.983 75.6493C189.116 75.8477 189.304 76.0023 189.525 76.0936C189.745 76.1849 189.987 76.2088 190.221 76.1622C190.455 76.1157 190.67 76.0008 190.839 75.8321C191.007 75.6634 191.122 75.4485 191.169 75.2145C191.215 74.9805 191.191 74.7379 191.1 74.5175C191.009 74.2971 190.854 74.1087 190.656 73.9762C190.458 73.8436 190.225 73.7729 189.986 73.7729L188.78 73.7729Z' fill='white'/%3E%3Cpath d='M170.601 20.2433C171.709 19.1352 172.463 17.7234 172.769 16.1864C173.075 14.6494 172.918 13.0562 172.318 11.6084C171.719 10.1606 170.703 8.92314 169.401 8.0525C168.098 7.18187 166.567 6.71716 165 6.71716C163.433 6.71716 161.902 7.18187 160.599 8.0525C159.297 8.92314 158.281 10.1606 157.682 11.6084C157.082 13.0562 156.925 14.6494 157.231 16.1864C157.537 17.7234 158.291 19.1352 159.399 20.2433V79.7289C158.291 80.837 157.537 82.2488 157.231 83.7858C156.925 85.3228 157.082 86.916 157.682 88.3638C158.281 89.8116 159.297 91.0491 160.599 91.9197C161.902 92.7903 163.433 93.255 165 93.255C166.567 93.255 168.098 92.7903 169.401 91.9197C170.703 91.0491 171.719 89.8116 172.318 88.3638C172.918 86.916 173.075 85.3228 172.769 83.7858C172.463 82.2488 171.709 80.837 170.601 79.7289V20.2433Z' fill='%23FFB13B'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M178.522 9.03788C179.63 11.7131 179.92 14.6568 179.355 17.4968C178.996 19.3033 178.301 21.0162 177.316 22.5506V77.4216C178.301 78.956 178.996 80.6689 179.355 82.4754C179.92 85.3154 179.63 88.2591 178.522 90.9343C177.415 93.6095 175.539 95.8961 173.132 97.5048C170.725 99.1136 167.895 99.9722 165 99.9722C162.105 99.9722 159.275 99.1136 156.868 97.5048C154.461 95.8961 152.585 93.6095 151.478 90.9343C150.37 88.2591 150.08 85.3154 150.645 82.4754C151.004 80.6689 151.699 78.956 152.684 77.4216V22.5506C151.699 21.0162 151.004 19.3033 150.645 17.4968C150.08 14.6568 150.37 11.7131 151.478 9.03788C152.585 6.36267 154.461 4.07612 156.868 2.46739C159.275 0.858658 162.105 0 165 0C167.895 0 170.725 0.858658 173.132 2.46739C175.539 4.07612 177.415 6.36266 178.522 9.03788ZM166.183 14.8759C166.229 14.6419 166.205 14.3994 166.114 14.179C166.023 13.9586 165.868 13.7702 165.67 13.6376C165.472 13.5051 165.239 13.4343 165 13.4343C164.761 13.4343 164.528 13.5051 164.33 13.6376C164.132 13.7702 163.977 13.9586 163.886 14.179C163.795 14.3994 163.771 14.6419 163.817 14.8759C163.864 15.1099 163.979 15.3249 164.147 15.4936L165 16.3465L165.853 15.4936C166.021 15.3249 166.136 15.1099 166.183 14.8759ZM165 83.6257L164.147 84.4786C163.979 84.6473 163.864 84.8623 163.817 85.0963C163.771 85.3303 163.795 85.5728 163.886 85.7932C163.977 86.0137 164.132 86.2021 164.33 86.3346C164.528 86.4671 164.761 86.5379 165 86.5379C165.239 86.5379 165.472 86.4671 165.67 86.3346C165.868 86.202 166.023 86.0137 166.114 85.7932C166.205 85.5728 166.229 85.3303 166.183 85.0963C166.136 84.8623 166.021 84.6473 165.853 84.4786L165 83.6257Z' fill='white'/%3E%3Cpath d='M189.986 32.9165C191.553 32.9165 193.084 32.4518 194.387 31.5812C195.69 30.7105 196.705 29.4731 197.304 28.0252C197.904 26.5774 198.061 24.9843 197.755 23.4473C197.449 21.9103 196.695 20.4985 195.587 19.3904C194.479 18.2822 193.068 17.5276 191.531 17.2219C189.995 16.9162 188.402 17.0731 186.955 17.6728C185.507 18.2725 184.27 19.288 183.4 20.591C182.529 21.894 182.065 23.426 182.065 24.9931L140.014 67.0557C138.447 67.0557 136.916 67.5204 135.613 68.3911C134.31 69.2617 133.295 70.4992 132.696 71.947C132.096 73.3948 131.939 74.9879 132.245 76.5249C132.55 78.0619 133.305 79.4738 134.413 80.5819C135.521 81.69 136.932 82.4446 138.469 82.7503C140.005 83.0561 141.598 82.8992 143.045 82.2995C144.493 81.6998 145.73 80.6842 146.6 79.3812C147.471 78.0782 147.935 76.5463 147.935 74.9792L189.986 32.9165Z' fill='%23FFB13B'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M203.508 30.5958C202.401 33.271 200.525 35.5575 198.118 37.1663C196.587 38.1896 194.885 38.9094 193.103 39.2977L154.315 78.0974C153.926 79.879 153.207 81.5816 152.184 83.113C150.575 85.5207 148.29 87.3972 145.615 88.5053C142.941 89.6134 139.998 89.9033 137.158 89.3384C134.319 88.7735 131.711 87.3791 129.664 85.3316C127.617 83.2841 126.223 80.6754 125.659 77.8354C125.094 74.9954 125.384 72.0516 126.491 69.3764C127.599 66.7012 129.475 64.4147 131.882 62.8059C133.413 61.7827 135.115 61.0629 136.896 60.6745L175.685 21.8748C176.074 20.0932 176.793 18.3906 177.816 16.8592C179.425 14.4515 181.71 12.575 184.385 11.4669C187.059 10.3588 190.002 10.0689 192.842 10.6338C195.681 11.1987 198.289 12.5931 200.336 14.6406C202.383 16.6881 203.777 19.2968 204.341 22.1368C204.906 24.9768 204.616 27.9206 203.508 30.5958ZM190.656 25.996C190.854 25.8635 191.009 25.6751 191.1 25.4547C191.191 25.2343 191.215 24.9917 191.169 24.7577C191.122 24.5237 191.007 24.3088 190.839 24.1401C190.67 23.9714 190.455 23.8565 190.221 23.81C189.987 23.7634 189.745 23.7873 189.525 23.8786C189.304 23.9699 189.116 24.1245 188.983 24.3229C188.851 24.5213 188.78 24.7545 188.78 24.9931L188.78 26.1993L189.986 26.1993C190.225 26.1993 190.458 26.1286 190.656 25.996ZM141.22 73.7729L140.014 73.7729C139.775 73.7729 139.542 73.8436 139.344 73.9762C139.146 74.1087 138.991 74.2971 138.9 74.5175C138.808 74.738 138.785 74.9805 138.831 75.2145C138.878 75.4485 138.993 75.6634 139.161 75.8321C139.33 76.0008 139.545 76.1157 139.779 76.1622C140.013 76.2088 140.255 76.1849 140.475 76.0936C140.696 76.0023 140.884 75.8477 141.017 75.6493C141.149 75.4509 141.22 75.2177 141.22 74.9791L141.22 73.7729Z' fill='white'/%3E%3Cpath d='M135.265 44.3834C134.158 43.2753 132.746 42.5206 131.21 42.2149C129.673 41.9092 128.08 42.0661 126.633 42.6658C125.186 43.2655 123.948 44.2811 123.078 45.5841C122.208 46.8871 121.743 48.419 121.743 49.9861C121.743 51.5532 122.208 53.0851 123.078 54.3881C123.948 55.6911 125.186 56.7067 126.633 57.3064C128.08 57.9061 129.673 58.063 131.21 57.7573C132.746 57.4516 134.158 56.6969 135.265 55.5888H194.734C195.842 56.6969 197.254 57.4516 198.79 57.7573C200.327 58.063 201.92 57.9061 203.367 57.3064C204.814 56.7067 206.052 55.6911 206.922 54.3881C207.792 53.0851 208.257 51.5532 208.257 49.9861C208.257 48.419 207.792 46.8871 206.922 45.5841C206.052 44.2811 204.814 43.2655 203.367 42.6658C201.92 42.0661 200.327 41.9092 198.79 42.2149C197.254 42.5206 195.842 43.2753 194.734 44.3834H135.265Z' fill='%23FFB13B'/%3E%3Cpath d='M147.935 24.9931C147.935 23.4259 147.471 21.894 146.6 20.591C145.73 19.288 144.493 18.2725 143.045 17.6728C141.598 17.0731 140.005 16.9161 138.469 17.2219C136.932 17.5276 135.521 18.2822 134.413 19.3903C133.305 20.4985 132.55 21.9103 132.245 23.4473C131.939 24.9843 132.096 26.5774 132.696 28.0252C133.295 29.473 134.31 30.7105 135.613 31.5812C136.916 32.4518 138.447 32.9165 140.014 32.9165L182.065 74.9792C182.065 76.5463 182.529 78.0782 183.4 79.3812C184.27 80.6842 185.507 81.6997 186.955 82.2995C188.402 82.8992 189.995 83.0561 191.531 82.7503C193.068 82.4446 194.479 81.69 195.587 80.5819C196.695 79.4738 197.449 78.0619 197.755 76.5249C198.061 74.9879 197.904 73.3948 197.304 71.947C196.705 70.4992 195.69 69.2617 194.387 68.3911C193.084 67.5204 191.553 67.0557 189.986 67.0557L147.935 24.9931Z' fill='%23FFB13B'/%3E%3Cpath d='M170.601 20.2433C171.709 19.1352 172.463 17.7234 172.769 16.1864C173.075 14.6494 172.918 13.0562 172.318 11.6084C171.719 10.1606 170.703 8.92314 169.401 8.0525C168.098 7.18187 166.567 6.71716 165 6.71716C163.433 6.71716 161.902 7.18187 160.599 8.0525C159.297 8.92314 158.281 10.1606 157.682 11.6084C157.082 13.0562 156.925 14.6494 157.231 16.1864C157.537 17.7234 158.291 19.1352 159.399 20.2433V79.7289C158.291 80.837 157.537 82.2488 157.231 83.7858C156.925 85.3228 157.082 86.916 157.682 88.3638C158.281 89.8116 159.297 91.0491 160.599 91.9197C161.902 92.7903 163.433 93.255 165 93.255C166.567 93.255 168.098 92.7903 169.401 91.9197C170.703 91.0491 171.719 89.8116 172.318 88.3638C172.918 86.916 173.075 85.3228 172.769 83.7858C172.463 82.2488 171.709 80.837 170.601 79.7289V20.2433Z' fill='%23FFB13B'/%3E%3Cpath d='M189.986 32.9165C191.553 32.9165 193.084 32.4518 194.387 31.5812C195.69 30.7105 196.705 29.4731 197.304 28.0252C197.904 26.5774 198.061 24.9843 197.755 23.4473C197.449 21.9103 196.695 20.4985 195.587 19.3904C194.479 18.2822 193.068 17.5276 191.531 17.2219C189.995 16.9162 188.402 17.0731 186.955 17.6728C185.507 18.2725 184.27 19.288 183.4 20.591C182.529 21.894 182.065 23.426 182.065 24.9931L140.014 67.0557C138.447 67.0557 136.916 67.5204 135.613 68.3911C134.31 69.2617 133.295 70.4992 132.696 71.947C132.096 73.3948 131.939 74.9879 132.245 76.5249C132.55 78.0619 133.305 79.4738 134.413 80.5819C135.521 81.69 136.932 82.4446 138.469 82.7503C140.005 83.0561 141.598 82.8992 143.045 82.2995C144.493 81.6998 145.73 80.6842 146.6 79.3812C147.471 78.0782 147.935 76.5463 147.935 74.9792L189.986 32.9165Z' fill='%23FFB13B'/%3E%3Cpath d='M115 49.9861H215V85.3316C215 93.6378 208.64 100 200.336 100H129.664C121.36 100 115 93.6378 115 85.3316V49.9861Z' fill='white'/%3E%3Cpath d='M130.005 74.9535C127.659 72.6079 126.208 69.3689 126.208 65.7912C126.208 58.633 132.012 52.8307 139.165 52.8307C146.321 52.8307 152.125 58.633 152.125 65.7912H144.535C144.535 62.8264 142.129 60.4236 139.165 60.4236C136.201 60.4236 133.799 62.8264 133.799 65.7912C133.799 67.2722 134.4 68.6139 135.367 69.5824H135.371C136.343 70.5579 137.152 70.8399 139.165 71.1595C142.745 71.532 145.983 72.6115 148.328 74.957C150.673 77.3032 152.125 80.5423 152.125 84.12C152.125 91.2781 146.321 97.084 139.165 97.084C132.012 97.084 126.208 91.2781 126.208 84.12H133.799C133.799 87.0847 136.201 89.4911 139.165 89.4911C142.129 89.4911 144.535 87.0847 144.535 84.12C144.535 82.639 143.934 81.3008 142.965 80.3288H142.962C141.99 79.3568 140.596 79.0217 139.165 78.7552V78.7517C135.695 78.2194 132.35 77.2997 130.005 74.9535Z' fill='black'/%3E%3Cpath d='M178.04 52.8307L168.874 97.084H161.284L152.125 52.8307H159.715L165.086 78.7482L170.45 52.8307H178.04Z' fill='black'/%3E%3Cpath d='M191.001 71.1595H203.958V84.12H203.962C203.962 91.2789 198.158 97.0847 191.001 97.0847C183.845 97.0847 178.045 91.2789 178.045 84.12V65.7919H178.041C178.041 58.6337 183.845 52.8314 191.001 52.8314C198.154 52.8314 203.958 58.6337 203.958 65.7919H196.367C196.367 62.83 193.962 60.4236 191.001 60.4236C188.037 60.4236 185.635 62.83 185.635 65.7919V84.12C185.635 87.0855 188.037 89.4882 191.001 89.4882C193.962 89.4882 196.364 87.0855 196.367 84.1235V84.12V78.7559H191.001V71.1595Z' fill='black'/%3E%3Cpath d='M0 0H84C88.2435 0 92.3131 1.68571 95.3137 4.68629C98.3143 7.68687 100 11.7565 100 16V84C100 88.2435 98.3143 92.3131 95.3137 95.3137C92.3131 98.3143 88.2435 100 84 100H16C11.7565 100 7.68687 98.3143 4.68629 95.3137C1.68571 92.3131 0 88.2435 0 84L0 0Z' fill='%23663399'/%3E%3Cpath d='M35.81 92C29.387 91.994 25.424 88.377 25.5 81.721V64.882C25.5 61.508 26.488 58.942 28.464 57.186C32.013 53.767 40.247 53.559 43.723 57.238C45.865 59.127 46.673 62.986 46.481 66.587H39.109C39.165 65.172 39.09 63.029 38.258 62.222C37.177 60.759 34.322 60.931 33.567 62.454C33.103 63.28 32.871 64.503 32.871 66.121V80.739C32.871 83.804 33.936 85.354 36.067 85.388C37.063 85.388 37.82 85.026 38.335 84.303C39.054 83.445 39.166 81.545 39.108 80.171H46.48C46.984 87.178 42.848 92.087 35.809 92H35.81ZM59.214 92C52.097 92.098 48.913 87.034 49.11 80.171H56.069C55.876 83.163 56.904 85.888 59.368 85.698C60.467 85.698 61.241 85.354 61.688 84.665C62.538 83.406 62.697 79.77 61.482 78.363C60.633 77.008 57.579 75.812 55.966 75.006C53.663 73.904 52.005 72.596 50.991 71.08C48.704 67.716 48.916 60.332 52.125 57.34C55.243 53.648 63.386 53.478 66.507 57.263C68.432 59.214 69.273 63.053 69.11 66.586H62.408C62.465 65.134 62.328 62.791 61.764 61.937C61.369 61.214 60.621 60.852 59.522 60.852C57.563 60.852 56.584 62.023 56.584 64.364C56.605 66.85 57.574 67.87 59.832 68.909C62.756 70.045 66.474 71.985 67.822 74.333C71.842 81.487 69.084 92.415 59.213 91.998L59.214 92ZM81.69 92C74.573 92.098 71.389 87.034 71.586 80.171H78.545C78.352 83.163 79.38 85.888 81.844 85.698C82.943 85.698 83.717 85.354 84.164 84.665C85.014 83.406 85.173 79.77 83.958 78.363C83.109 77.008 80.055 75.812 78.442 75.006C76.139 73.904 74.481 72.596 73.467 71.08C71.18 67.716 71.392 60.332 74.601 57.34C77.719 53.648 85.862 53.478 88.983 57.263C90.908 59.214 91.749 63.053 91.586 66.586H84.884C84.941 65.134 84.804 62.791 84.24 61.937C83.845 61.214 83.097 60.852 81.998 60.852C80.039 60.852 79.06 62.023 79.06 64.364C79.081 66.85 80.05 67.87 82.308 68.909C85.232 70.045 88.95 71.985 90.298 74.333C94.318 81.487 91.56 92.415 81.689 91.998L81.69 92Z' fill='white'/%3E%3C/pattern%3E%3C/defs%3E%3Crect width='100%25' height='100%25' fill='url(%23pattern)' /%3E%3C/svg%3E");
}
</style>



<h3 class="wp-block-heading" id="svg-rotated-background-generator">SVG Rotated Background Generator</h3>



<p class="wp-block-paragraph">You can also try it out using the generator below to create custom rotated background patterns with SVG. You can also adjust parameters such as pattern size, scaling, and rotation angle.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper alignwide"><iframe id="cp_embed_JojJKog" src="//codepen.io/anon/embed/JojJKog?height=1005&amp;theme-id=1&amp;slug-hash=JojJKog&amp;default-tab=result" height="1005" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed JojJKog" title="CodePen Embed JojJKog" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p class="wp-block-paragraph"></p>
<p><a href="https://blog.1a23.com/2025/03/06/rotated-background-patterns-in-css-with-svg/">Rotated Background Patterns in CSS with SVG</a> appeared first on <a href="https://blog.1a23.com">1A23 Blog</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17403</post-id>	</item>
		<item>
		<title>Tìtsyul Amip Twenty Twenty-Five</title>
		<link>https://1a23.com/works/design/titsyul-amip-twenty-twenty-five/</link>
		
		<dc:creator><![CDATA[Eana Hufwe]]></dc:creator>
		<pubDate>Wed, 05 Mar 2025 01:24:27 +0000</pubDate>
				<guid isPermaLink="false">https://1a23.com/?post_type=design&#038;p=1705</guid>

					<description><![CDATA[<img width="1200" height="630" src="https://1a23.com/wp-content/uploads/2025/02/image-27.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2025/02/image-27.png 1200w, https://1a23.com/wp-content/uploads/2025/02/image-27-300x158.png 300w, https://1a23.com/wp-content/uploads/2025/02/image-27-1024x538.png 1024w, https://1a23.com/wp-content/uploads/2025/02/image-27-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><p>Tìtsyul Amip Twenty Twenty-Five is the next iteration of the 1A23 Studio theme. Similar to the previous iteration, E. R. @ Tìtsyul Amip, it still runs on WordPress. However, this time, since WordPress (Gutenberg) Site Editor is now relatively established, I decided to base off the new theme from the current default WordPress theme, Twenty [&#8230;]</p>
<p><a href="https://1a23.com/works/design/titsyul-amip-twenty-twenty-five/">Tìtsyul Amip Twenty Twenty-Five</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1200" height="630" src="https://1a23.com/wp-content/uploads/2025/02/image-27.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin: auto; margin-bottom: 5px;max-width: 100%;" link_thumbnail="" decoding="async" loading="lazy" srcset="https://1a23.com/wp-content/uploads/2025/02/image-27.png 1200w, https://1a23.com/wp-content/uploads/2025/02/image-27-300x158.png 300w, https://1a23.com/wp-content/uploads/2025/02/image-27-1024x538.png 1024w, https://1a23.com/wp-content/uploads/2025/02/image-27-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" />
<p class="wp-block-paragraph"><strong>Tìtsyul Amip Twenty Twenty-Five</strong> is the next iteration of the 1A23 Studio theme. Similar to the previous iteration, <a href="https://1a23.com/works/design/e-r-titsyul-amip/" data-type="design" data-id="1024">E. R. @ Tìtsyul Amip</a>, it still runs on WordPress. However, this time, since <a href="https://wordpress.org/documentation/article/site-editor/">WordPress (Gutenberg) Site Editor</a> is now relatively established, I decided to base off the new theme from the current default WordPress theme, <a href="https://wordpress.org/themes/twentytwentyfive/">Twenty Twenty-Five</a>, hence the name.</p>



<h2 class="wp-block-heading" id="challenges">Challenges</h2>



<p class="wp-block-paragraph">Despite the Site Editor gives you an almost WYSIWYG experience, with a wide range of established blocks ready to use, the downside is that those blocks are not as flexible as traditional WordPress architecture. Much less hooks and filters are made available in the built-in blocks making it harder to extend upon. With that, I had to rewrite (or rather copy-and-paste from Gutenberg) various built-in blocks for extensions. These are:</p>



<ul class="wp-block-list">
<li>Reusable header and footer patterns background that recognizes the custom post types of the current page, based on the <em>Group</em> block.</li>



<li><em>Buttons</em> and <em>Button</em> blocks with <a href="https://iconify.design">Iconify</a> icon support and custom active page detection to serve as an alternative to the <em>Navigation</em> block.</li>



<li><em>Page Number</em> block to render the current page number, based on the <em>Pagination Pages</em> block.</li>



<li><em>Next Page</em> and <em>Previous Page</em> buttons with added icon, based on the built-in blocks with the same name.</li>



<li>Links list to show links field of custom post types.</li>



<li><em>Lyricova Quotes</em> to render a random verse from <a href="https://lyricova.1a23.studio">Lyricova</a> that has been in the site footer since forever ago.</li>



<li><em>Major-Minor Conditional Block</em> and <em>Landscape-Portrait Conditional Block</em> to render a set of children blocks based on the <em>Is Minor</em> field of custom post types and the aspect ratio of the post’s featured image.</li>
</ul>



<p class="wp-block-paragraph">These blocks are packed as a plugin to be used together with the theme.</p>



<p class="wp-block-paragraph">On top of that are CSS styles for everything that is not covered by Gutenberg’s style editor (which is quite a lot).</p>



<div class="wp-block-group alignfull has-primary-background-color has-background has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40)">
<figure class="wp-block-gallery alignwide has-nested-images columns-4 is-style-columns wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/03/1a23.com_.png"><img loading="lazy" decoding="async" width="713" height="1024" data-id="1761" src="https://1a23.com/wp-content/uploads/2025/03/1a23.com_-713x1024.png" alt="" class="wp-image-1761" srcset="https://1a23.com/wp-content/uploads/2025/03/1a23.com_-713x1024.png 713w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_-209x300.png 209w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_-768x1103.png 768w" sizes="auto, (max-width: 713px) 100vw, 713px" data-mwl-img-id="1761" /></a><figcaption class="wp-element-caption">Home page</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_-e1741124742300.png"><img loading="lazy" decoding="async" width="553" height="1024" data-id="1762" src="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_-e1741124742300-553x1024.png" alt="" class="wp-image-1762" srcset="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_-e1741124742300-553x1024.png 553w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_-e1741124742300-162x300.png 162w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_-e1741124742300-768x1423.png 768w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_-e1741124742300-829x1536.png 829w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_-e1741124742300-1105x2048.png 1105w" sizes="auto, (max-width: 553px) 100vw, 553px" data-mwl-img-id="1762" /></a><figcaption class="wp-element-caption">“Open Source” archive</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_search-unicode-flow-launcher_.png"><img loading="lazy" decoding="async" width="932" height="1024" data-id="1759" src="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_search-unicode-flow-launcher_-932x1024.png" alt="" class="wp-image-1759" srcset="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_search-unicode-flow-launcher_-932x1024.png 932w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_search-unicode-flow-launcher_-273x300.png 273w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_search-unicode-flow-launcher_-768x844.png 768w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_open-source_search-unicode-flow-launcher_-1397x1536.png 1397w" sizes="auto, (max-width: 932px) 100vw, 932px" data-mwl-img-id="1759" /></a><figcaption class="wp-element-caption">“Open Source” single</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_design_project-sekai-ctf_-e1741124780964.png"><img loading="lazy" decoding="async" width="606" height="1024" data-id="1764" src="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_design_project-sekai-ctf_-e1741124780964-606x1024.png" alt="" class="wp-image-1764" srcset="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_design_project-sekai-ctf_-e1741124780964-606x1024.png 606w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_design_project-sekai-ctf_-e1741124780964-178x300.png 178w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_design_project-sekai-ctf_-e1741124780964-768x1297.png 768w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_design_project-sekai-ctf_-e1741124780964-910x1536.png 910w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_design_project-sekai-ctf_-e1741124780964-1213x2048.png 1213w" sizes="auto, (max-width: 606px) 100vw, 606px" data-mwl-img-id="1764" /></a><figcaption class="wp-element-caption">“Design” single</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_.png"><img loading="lazy" decoding="async" width="2560" height="3498" data-id="1763" src="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_.png" alt="" class="wp-image-1763" srcset="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_.png 2560w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_-220x300.png 220w" sizes="auto, (max-width: 2560px) 100vw, 2560px" data-mwl-img-id="1763" /></a><figcaption class="wp-element-caption">“Gallery” archive</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_nando-demo_.png"><img loading="lazy" decoding="async" width="1021" height="1024" data-id="1760" src="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_nando-demo_-1021x1024.png" alt="" class="wp-image-1760" srcset="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_nando-demo_-1021x1024.png 1021w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_nando-demo_-300x300.png 300w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_gallery_nando-demo_-150x150.png 150w" sizes="auto, (max-width: 1021px) 100vw, 1021px" data-mwl-img-id="1760" /></a><figcaption class="wp-element-caption">“Gallery” single</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_.png"><img loading="lazy" decoding="async" width="1024" height="761" data-id="1758" src="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_-1024x761.png" alt="" class="wp-image-1758" srcset="https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_-1024x761.png 1024w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_-300x223.png 300w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_-768x571.png 768w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_-1536x1141.png 1536w, https://1a23.com/wp-content/uploads/2025/03/1a23.com_works_-2048x1522.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-mwl-img-id="1758" /></a><figcaption class="wp-element-caption">Works type page</figcaption></figure>
</figure>
</div>
<p><a href="https://1a23.com/works/design/titsyul-amip-twenty-twenty-five/">Tìtsyul Amip Twenty Twenty-Five</a> appeared first on <a href="https://1a23.com">1A23 Studio</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1705</post-id>	</item>
	</channel>
</rss>
