梁海 Liang Hai's Avatar

梁海 Liang Hai

@lianghai.dev

https://lianghai.dev (That’s the Slow Horses staircase in the banner pic, in case you were wondering.) #Unicode #OpenType #Python #TypeScript #Svelte #Astro #Swift

128
Followers
202
Following
49
Posts
21.11.2024
Joined
Posts Following

Latest posts by 梁海 Liang Hai @lianghai.dev

Will join you if you’ll be bouldering somewhere on Wednesday before 4 pm!

09.03.2026 21:48 👍 1 🔁 0 💬 0 📌 0
Post image

Apparently I’ve been incorrectly claiming on my website that I’m a vice-chair of the Script WG, due to an editing error: lianghai.dev 🫠

05.02.2026 00:24 👍 1 🔁 0 💬 0 📌 0
Preview
FOSDEM 2026 - Graphite: a busy year in review

The node-based, procedural design tool Graphite’s talk at FOSDEM has its recording online now: fosdem.org/2026/schedul...

05.02.2026 00:05 👍 0 🔁 0 💬 0 📌 0

It’s so satisfying to vote against Andrew Cuomo again.

25.10.2025 20:29 👍 489 🔁 48 💬 16 📌 1
Structural markup and right-to-left text in HTML How should I use the dir attribute to set text direction on structural elements in HTML?

@atila.io, after our brief chat, I realized that it’s quite unusual for you guys to have to deal with bidi issues from the level of Solid or SolidStart. Can you have a look at this article from W3C and elaborate a bit about what exact problems you guys are facing? www.w3.org/Internationa...

13.10.2025 21:14 👍 0 🔁 0 💬 0 📌 0

- On the other hand, Google Fonts has been porting tools to Rust. You can read about their roadmap here: github.com/googlefonts/..., where klippa is mentioned as a replacement of hb-subset.
- You should also keep an eye on the progress of the Incremental Font Transfer effort: www.w3.org/TR/IFT/.

13.10.2025 21:02 👍 1 🔁 0 💬 0 📌 0

- Likely irrelevant to you, but fyi, the corresponding solution in Python (the font industry’s common language) is maintained by pretty much the same group of developers in fontTools: glyph set subsetting (github.com/fonttools/fo...) + design space subsetting (github.com/fonttools/fo...).

13.10.2025 21:02 👍 1 🔁 0 💬 1 📌 0

- Fonts are complicated. Don’t trust naive solutions that are not backed by HB developers.
- HB has a WASM-based JS lib, harfbuzzjs (github.com/harfbuzz/har...), which is currently maintained in a quite confusing way and can use some help from professional TS developers (github.com/harfbuzz/har...).

13.10.2025 21:02 👍 1 🔁 0 💬 1 📌 0

@danielroe.dev, it was great to meet you and climb together! – So about the font subsetting situation:

- The current best practice is likely HarfBuzz (HB)’s subsetting API (harfbuzz.github.io/harfbuzz-hb-...), which is written in C++ and has a CLI, hb-subset (harfbuzz.github.io/utilities.ht...).

13.10.2025 21:02 👍 1 🔁 0 💬 1 📌 0
Preview
e18e - Ecosystem Performance - Open Collective The e18e community has the aim of improving performance of tooling and packages in the JavaScript ecosystem.

you can sponsor @e18e.dev through GitHub Sponsors or OpenCollective

these funds will primarily be used for two things:

- distributed to projects/individuals in the wider JS community
- development of community projects/tools

thanks so much to those of you who already sponsor us 💙

13.10.2025 11:26 👍 24 🔁 9 💬 1 📌 0
CourtBouillon − Five Years of CourtBouillon Authentic people growing open source code with taste

Yesterday was CourtBouillon 5-year anniversary 🎂

As each year, we take some time to see what happened during the year on the projects (features, money…), and to draw the path for the next one.

Here’s the rewind of this year!

↘️
www.courtbouillon.org/blog/00059-f...

13.10.2025 09:01 👍 5 🔁 1 💬 0 📌 0

(Oops I meant “expression-only”.)

12.10.2025 10:38 👍 0 🔁 0 💬 0 📌 0

Naming is easy. A successor to JSX is naturally named with the next letter, so JSY – Y for “WHY are you still tolerating a statement-only syntax?”.

12.10.2025 00:00 👍 0 🔁 0 💬 1 📌 0

Ah turned out you’re a co-chair of TC39! No wonder I vaguely heard you mentioned “standardization” several times to people… 🫠

10.10.2025 23:47 👍 1 🔁 0 💬 0 📌 0

@danielroe.dev: Signing up for the bouldering session on Saturday!

10.10.2025 20:48 👍 2 🔁 0 💬 0 📌 0
Post image

Got this cutie from @todde.tv’s Vite quiz at #ViteConf!

10.10.2025 15:33 👍 12 🔁 1 💬 0 📌 0
Post image

Solid advice from @atila.io at #ViteConf.

10.10.2025 10:44 👍 15 🔁 3 💬 0 📌 0
Preview
Astro Happy Hour · Luma Astro is coming to Amsterdam for ViteConf and we'd love to meet you! Join us for a happy hour, generously sponsored by Netlify. The Astro core team is meeting…

Want to meet the Astro core team? Come join us for some drinks and a chat in Amsterdam on Saturday — sponsored by @netlify.com!

Register here: luma.com/fbmyfx30

08.10.2025 12:48 👍 20 🔁 5 💬 1 📌 1
Post image Post image

A panel chat after the Vite documentary’s premiere today at #ViteConf, featuring @antfu.me or “The Fu”, among others.

09.10.2025 22:35 👍 3 🔁 0 💬 0 📌 0
Vite: The Documentary
Vite: The Documentary YouTube video by CultRepo

"Let's hear it for the UN of Javascript!

Vite: The Documentary is finally here.

If you missed the premiere, it's OK!!! Here's the link so you can watch it again, and again and again.

youtu.be/bmWQqAKLgT4 "

09.10.2025 20:35 👍 71 🔁 30 💬 4 📌 2
Preview
The World Wide Web Consortium (W3C) adopts a new logo to signal positive changes | 2025 | Press releases | W3C W3C is rolling out a new logo, following W3C’s formation in 2023 as a non-profit, public-interest organization, and the recent release of strategic objectives to support W3C’s roadmap.

Really impressive how bad this is. Reeks of US corporate superficiality. Even worse than Unicode Consortium’s rebranding some year ago. www.w3.org/press-releas...

02.10.2025 01:18 👍 0 🔁 0 💬 1 📌 0
Preview
When 255 × 0 does not Equal Zero A discussion around blend modes in different color spaces, and where their math happens on the web

Fucking hell. Turned out I’m not insane – indeed Safari and Chrome do blend mode calculation in the display’s color profile, not sRGB: danielcwilson.com/blog/2020/03...

26.07.2025 23:44 👍 2 🔁 0 💬 0 📌 0

In one month, Node.js 18 reaches EOL. Vite and a lot of your dependencies will release majors requiring Node.js 20+. Please update as recommended now so you are prepared to jump into greener fields. Vite 4 will also stop receiving security patches after the next major, so please jump to latest too 🙏

27.03.2025 14:38 👍 46 🔁 4 💬 1 📌 2
Video thumbnail

Class 2 assignment of @robstenson's Coldtype course: "modify the drumkit.py file to look different". Finished before Sunday midnight – two days early! Sound and font (Obviously Variable) provided by the course.

09.03.2025 22:54 👍 3 🔁 0 💬 0 📌 0
tears in the rain meme

tears in the rain meme

i’ve seen shitposting you people wouldn’t believe

08.03.2025 20:01 👍 73 🔁 5 💬 2 📌 0

I’m so excited to share this project of mine! 🚲 ❤️

Super grateful to the generous support from @bikemn.bsky.social, @cyclehoop.bsky.social & the Lyndale Neighborhood Association to make this idea a reality.

Minneapolis: Want to rent a cargo bike?

Follow @mplscargobikelibrary.com !

08.03.2025 14:47 👍 325 🔁 62 💬 17 📌 9
Preview
Spline - 3D Design tool in the browser with real-time collaboration Spline is a free 3D design software with real-time collaboration to create web interactive experiences in the browser. Easy 3d modeling, animation, textures, and more.

Finally learning spline.design! 🎉

09.03.2025 02:02 👍 37 🔁 2 💬 0 📌 0

The writing this season is a little too on-the-nose

09.03.2025 02:17 👍 20 🔁 4 💬 0 📌 0
Post image

Someone at Microsoft thought it's such a brilliant idea to use a generic tile for everything and concatenate lists together so it looks really neat.

08.03.2025 21:31 👍 1 🔁 0 💬 1 📌 0
Post image Post image

Figured out how to enforce this italic style of function parameters that I really like. Now I can use any theme!

(Dracula Theme Official, which is in the screenshots, and SynthWave '84 are some choices that come with this style. But sometimes I need to use a light theme.)

07.03.2025 21:38 👍 3 🔁 0 💬 0 📌 0