mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-13 20:20:39 +00:00
14a9cf73f3
* web: the Korean UI loads its own Hangul face (#15208) * web: the Korean UI loads its own Hangul face (#15208) The Korean interface language was broken in the browser build: every Korean label rendered as an empty tofu box, because the web shell gave a Korean UI the Japanese face, which has no Hangul glyphs. Ship a Hangul, kana and Latin subset of Noto Sans KR as CraftUI-KR.otf and fetch it on demand for a Korean UI, the way the Chinese faces are fetched for a Chinese one. The face leads the sans families for a Korean UI, so Korean text typed into a design draws as well. The subset is renamed Craft UI KR under the OFL, and the attribution rows go in attribution/pending/korean-web-font.md, so ATTRIBUTION.md is not edited. --------- Co-authored-by: SolidCraft Contributor <contrib@vdirienzo.local> Co-authored-by: vdirienzo <vdirienzo@users.noreply.github.com>
59 lines
4.4 KiB
HTML
59 lines
4.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
|
<title>SolidCraft</title>
|
|
<meta name="description" content="Open-source parametric CAD built in Rust. Desktop, browser, and MCP for AI agents.">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:site_name" content="SolidCraft">
|
|
<meta property="og:title" content="SolidCraft: try it in your browser">
|
|
<meta property="og:description" content="Open-source parametric CAD built in Rust. Desktop, browser, and MCP for AI agents.">
|
|
<meta property="og:url" content="https://app.solidcraft.io/">
|
|
<meta property="og:image" content="https://docs.solidcraft.io/og.png">
|
|
<meta property="og:image:width" content="1280">
|
|
<meta property="og:image:height" content="640">
|
|
<meta property="og:image:alt" content="SolidCraft: open-source parametric CAD built in Rust">
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="SolidCraft: try it in your browser">
|
|
<meta name="twitter:description" content="Open-source parametric CAD built in Rust. Desktop, browser, and MCP for AI agents.">
|
|
<meta name="twitter:image" content="https://docs.solidcraft.io/og.png">
|
|
<meta name="twitter:image:alt" content="SolidCraft: open-source parametric CAD built in Rust">
|
|
<link data-trunk rel="rust" data-bin="solidcraft-web" data-wasm-opt="z" data-weak-refs />
|
|
<link data-trunk rel="copy-file" href="../../assets/fonts/biz-udp-gothic/BIZUDPGothic-Regular.ttf" data-target-path="fonts" />
|
|
<link data-trunk rel="copy-file" href="../../assets/fonts/biz-udp-gothic/OFL.txt" data-target-path="fonts" />
|
|
<link data-trunk rel="copy-file" href="../../assets/fonts/craft-ui-sc/CraftUI-SC.otf" data-target-path="fonts" />
|
|
<link data-trunk rel="copy-file" href="../../assets/fonts/craft-ui-sc/OFL.txt" data-target-path="fonts/craft-ui-sc" />
|
|
<link data-trunk rel="copy-file" href="../../assets/fonts/craft-ui-tc/CraftUI-TC.otf" data-target-path="fonts" />
|
|
<link data-trunk rel="copy-file" href="../../assets/fonts/craft-ui-tc/OFL.txt" data-target-path="fonts/craft-ui-tc" />
|
|
<link data-trunk rel="copy-file" href="../../assets/fonts/craft-ui-kr/CraftUI-KR.otf" data-target-path="fonts" />
|
|
<link data-trunk rel="copy-file" href="../../assets/fonts/craft-ui-kr/OFL.txt" data-target-path="fonts/craft-ui-kr" />
|
|
<link data-trunk rel="css" href="../../assets/styles/web/loading.css" />
|
|
<link data-trunk rel="copy-file" href="../../assets/styles/web/loading-logo.svg" />
|
|
<!-- Installable as an app (manifest.webmanifest); the icons are the Linux exports of the app mark. -->
|
|
<meta name="theme-color" content="#343840">
|
|
<link rel="manifest" href="manifest.webmanifest">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="icons/32x32/io.tangencylabs.solidcraft.png">
|
|
<link rel="apple-touch-icon" href="icons/256x256/io.tangencylabs.solidcraft.png">
|
|
<link data-trunk rel="copy-file" href="manifest.webmanifest" />
|
|
<link data-trunk rel="copy-file" href="channel-storage.txt" />
|
|
<link data-trunk rel="copy-file" href="../../assets/icons/app/linux/exports/hicolor/32x32/apps/io.tangencylabs.solidcraft.png" data-target-path="icons/32x32" />
|
|
<link data-trunk rel="copy-file" href="../../assets/icons/app/linux/exports/hicolor/256x256/apps/io.tangencylabs.solidcraft.png" data-target-path="icons/256x256" />
|
|
<link data-trunk rel="copy-file" href="../../assets/icons/app/linux/exports/hicolor/512x512/apps/io.tangencylabs.solidcraft.png" data-target-path="icons/512x512" />
|
|
</head>
|
|
<body>
|
|
<canvas id="solidcraft_canvas"></canvas>
|
|
<div id="solidcraft_loading" role="status"><img src="loading-logo.svg" alt=""><span class="sr-only">Loading SolidCraft…</span></div>
|
|
<script>
|
|
// Offline use and updates (sw.js; written into release builds by `cargo xtask web-offline`).
|
|
if ("serviceWorker" in navigator) {
|
|
addEventListener("load", () => navigator.serviceWorker.register("sw.js").catch(() => {}));
|
|
}
|
|
// Install as an app: the browser's offer can come before the app runs, so it is kept here for
|
|
// the app's File ▸ Install app… item (src/install.rs). Installed, the browser makes no more offers.
|
|
addEventListener("beforeinstallprompt", (e) => { e.preventDefault(); window.solidcraftInstall = e; });
|
|
addEventListener("appinstalled", () => { window.solidcraftInstall = null; });
|
|
</script>
|
|
</body>
|
|
</html>
|