博客中文字体自托管与子集化实践上一篇《字体原理笔记》讲了字体栈和子集化的原理,这一篇只解决怎么落地:把一套中文字体放到自己的服务器上,并把十几 MB 的源文件裁成网页能承受的大小。 我拿 Noto Serif SC 做示例,正文使用 400,标题和粗体使用 700。换成思源宋体、霞鹜文楷或其它字体时,步骤不变,需要调整的只是下载地址、文件名和字重。 为什么要做字体子集 中文字体通常包含两万多个字形。一个完整的 OTF/TTF ... 评论点赞收藏13 天前
字体原理笔记上一篇《博客字体的选择》记的是换字体的结果,现在继续说一下背后的原理。 三大字体族 衬线体(serif):笔画末端带小装饰角。拉丁的 Times、Georgia;中文对应宋体/明体——横细竖粗、横画末端有顿角。装饰不是审美添头,是工艺化石:拉丁衬线来自古罗马石刻收刀,宋体顿角来自雕版刀口与毛笔顿笔。气质天然联想「纸、书、正式」。 黑体(sans-serif):去掉一切装饰,笔画等粗。拉丁的 Hel... 评论点赞收藏20 天前
博客字体的选择记录博客更换字体,结果把字号、行高、行宽、颜色全部换了一遍——因为字体族要配对尺寸系统,动一个就得动一串。 从衬线体到系统黑体 最初使用思源宋体的子集(400/700 两档,子集化后各 400KB 左右),当时的实现: body { / 拉丁字形在前:英文、数字走 Georgia(真斜体+老式数字),中文落自托管宋体 / font-family: Georgia, "Iowan Old Style... 评论点赞收藏21 天前
我的AI牛仔裤选购指南一个困扰的问题 平时穿得最多的就是牛仔裤。回顾那些被淘汰的裤子,无论价格高低,“死因”惊人地一致——后裆十字缝附近的布料,要么摩擦变色,要么越磨越薄,最后直接拉丝破洞。 我一直想不通:就算是久坐,受力最大的明明是臀部正中间,为什么先报废的反而是它下面那一圈? 为了解开这个心结,我和 AI 进行了下面这场对话,并最终据此挑到了一条相对满意的牛仔裤。 与 AI 的对话过程 第一步:角色设定 你是一名衣... 评论点赞收藏26 天前
Cloudflare Tunnel 内网穿透使用 Cloudflare Tunnel 穿透内网服务暴露在外网。 原理:在内网服务器上跑一个 cloudflared 进程,它主动向 Cloudflare 边缘网络建立一条加密隧道。外部用户访问你的域名 → Cloudflare 全球网络 → 隧道 → 你的内网服务。全程只需要出站连接,不需要开放任何入站端口。 前置准备 Cloudflare 账号 域名托管在 Cloudflare 一台内网服务... 评论点赞收藏31 天前
Claude Code Skills 使用Claude Code Skills 是一套模块化功能扩展系统,允许开发者通过结构化的文件夹来增强 Claude 的能力。每个Skills(Skill)都包含一个核心的 文件以及相关的辅助资源文件。 Skills存储方式 个人Skills (Personal Skills) 存储位置:~/.claude/skills/ 目录 适用场景:个人工作流程优化、实验性功能开发、个人生产力工具 项目Skil... 评论点赞收藏52 天前
Node.js 环境安装使用 winget 安装 # 安装官方 LTS 版本 winget install OpenJS.NodeJS.LTS # 安装特定的版本 winget install OpenJS.NodeJS.LTS --version 24.18.0 # 安装完成后,重启终端并输入 node -v 和 npm -v 验证是否成功 使用安装包安装 使用 或者 Node.js 官方网站下载 Windows 安装... 评论点赞收藏56 天前
使用 AI 开发一个 Chrome 插件主要是整理整个操作的步骤,F12查看源码,找出关键的HTML控件代码,比如点击按钮、 输入文本框等,然后提交给提示词让根据需求完成编码。 下面的是实现一个风控网站的助手插件,把历史搜索过的关键字先导出 csv 文件,然后逐行扫描根据关键字导出 PDF 结果文件下载到本地存档。 # Chrome tdcc 操作辅助助手 开发 Chrome 插件,辅助人工批量操作,实现浏览器自动化以下操作,注意每个... 评论点赞收藏82 天前
chrome-devtools-mcp 使用Chrome DevTools MCP 是一个本地服务,它为 AI 编码助手(比如 Claude、Codex、Cursor 等)提供了一套控制 Chrome 浏览器的工具集。 Chrome M144 中添加了一项新功能,可让 Chrome 开发者工具 MCP 服务器请求远程调试连接。这一新流程基于 Chrome 现有的远程调试功能构建而成。默认情况下,Chrome 中会停用远程调试连接。开发者必须... 评论点赞收藏86 天前
FastAdmin 使用备忘录项目初始配置 # 将 application\admin\view\index\index.html 文件将 admin.php 警告隐藏 sed -i '/alert-danger-light text-center/s#style="margin-bottom:0;border:none;"#style="margin-bottom:0;border:none;display:none;"#'... 评论点赞收藏89 天前
Claude Code 使用安装 # 全局安装 npm install -g @anthropic-ai/claude-code # bash curl -fsSL | bash # Windows PowerShell irm | iex # Windows CMDbatch curl -fsSL -o install.cmd && install.cmd && del install.cmd # 查看版本 claude ... 评论点赞收藏124 天前
Docker版CLIProxyAPI部署Docker 版配置文件 # cat /opt/docker/build/dockge/cliproxyapi/compose.yaml services: cliproxyapi: image: eceasy/cli-proxy-api:latest container_name: cliproxyapi ports: - 8317:8317 - 8085:8085 - 1455:1455 - ... 评论点赞收藏134 天前
Codex 编辑文件乱码解决方案Codex 编辑文件乱码 解决 Codex 修改文件后中文乱码问题:根源在终端编码,不在 VS Code! 关键词:Codex、中文乱码、VS Code、PowerShell、UTF-8、终端编码、无 BOM 问题现象 使用 GitHub Copilot(或 Codex)修改包含中文的文件时,保存后打开发现中文变成乱码,比如: æˆ‘çˆ±ä¸æ–‡ → 实际应为 “我爱中文” 很多人第一反应是... 评论点赞收藏145 天前
Codex 使用笔记使用第三方中转配置 ~/.codex/auth.json { "auth_mode": "apikey", "OPENAI_API_KEY": "sk-697379e50af6d2d2c98429d9be2010f2638f3ee6d1d72d437a3ec0dcfe268330" } ~/.codex/config.toml windows_wsl_setup_acknowledged = tr... 评论点赞收藏152 天前
SSH 密码爆破的三层境界第一层,手动输密码 手撸,地球人都知道的原始方式。 ssh -p 20026 root@38.148.243.111 # 参数说明 # -p 20026 指定 SSH 连接的端口 20026 # root@38.148.243.111 登录目标主机 38.148.243.111,以 root 用户身份 第二层,自动输密码 把密码字典枚举后,自动输入密码。 sshpass -p "0a9a8a872... 评论点赞收藏186 天前
源码编译开源项目 Memos 安卓版 APKwindows11下编译开源项目 的 0.8.5 (对应 Memos-v0.24.0) 版本 APK 步骤。 1. 检出源码 # 1)clone 项目 git clone cd MoeMemosAndroid # 2)拉取远端标签(若还没拉过) git fetch origin --tags # 3)查看是否有 0.8.5 的 tag git tag -l "0.8.5" # 4)切换到 0.8.... 评论点赞收藏187 天前
rsync 常用用法假设本地目录结构如下,需要同步到线上服务器 root@74.48.1.2:/opt/backup/dst/ 目录下 /mnt/d/src/ ├── dir_a │ ├── dir_a1 │ ├── dir_a2 │ │ ├── dir_aa1 │ │ └── file_aa1.txt │ ├── dir_a3 │ └── file_a1.txt ├── dir_b ├── dir_c └── fi... 评论点赞收藏208 天前
Docker 环境部署 Ollama + Open WebUI我的环境:Win11 + WSL2 Ubuntu 22.04 + Docker,使用 Docker 部署 Ollama(模型服务)+ Open WebUI(网页界面) 1、先确认 Docker/Compose OK 在 WSL 的 Ubuntu 里执行: docker version docker compose version 都能输出版本号就行。 2、创建一键启动的 docker-compos... 评论点赞收藏215 天前
Node.js 多版本使用和管理fnm 是一款快速简单跨平台的 Node.js 版本管理器,使用 Rust 构建。 # 安装 fnm winget install Schniz.fnm fnm --version fnm current # 查看最新版本 fnm ls-remote --lts --latest # 安装版本 fnm install 24.12.0 # 使用指定版本 fnm use 24.12.0 # 固化nod... 评论点赞收藏236 天前