构成主义 / 至上主义 / 包豪斯 —— 免费商用素材情报报告
检索时间:2026-10-12(Asia/Shanghai) 所有 URL 均为本次实际访问到的页面。凡无法验证的一律写「未找到」,不做记忆推测。
0. 方法与验证强度说明(请先读,决定了哪些结论可信)
本次一共用了 5 条互相独立的验证通道,强度从高到低:
| 验证方式 | 覆盖内容 | 强度 |
|---|---|---|
下载字体二进制 → 解析 cmap 表 |
逐个字体实测 U+0410–U+044F(А–я)+ Ё/ё + 乌克兰语字母 | ★★★★★ 最硬证据 |
cdn.jsdelivr.net/gh/google/fonts@main/<ofl\|apache>/<slug>/METADATA.pb |
Google Fonts 官方仓库的 license / category / subsets / axes 原始声明 |
★★★★★ |
fonts.googleapis.com/css2?family=…(带 Chrome UA) |
实测返回的 /* cyrillic */、/* cyrillic-ext */ 子集块 |
★★★★☆ |
api.fontsource.org/v1/fonts、api.fontshare.com/v2/fonts |
分发平台的许可证与 subsets 元数据(2103 / 100 条) | ★★★★☆ |
Wikimedia Commons api.php(imageinfo + extmetadata) |
每个具体文件的 LicenseShortName / UsageTerms / 像素尺寸 | ★★★★★ |
本机网络可达性实测(重要,影响下文标注):
| 主机 | 结果 |
|---|---|
fonts.googleapis.com / fonts.gstatic.com |
✅ 200 |
cdn.jsdelivr.net |
✅ 200 |
api.fontsource.org / api.fontshare.com |
✅ 200 |
gitlab.com + GitLab API |
✅ 200 |
commons.wikimedia.org + API |
✅ 200(高频请求会 reset,需节流) |
ambientcg.com / polyhaven.com |
✅ 200 |
fonts.google.com |
❌ 连接超时 —— 所以「Google Fonts 页面上的 Cyrillic 语言标签」我是用 官方仓库 METADATA.pb + CSS API + 二进制 cmap 三重替代验证 的,结论比看网页标签更硬 |
en.wikipedia.org / www.wikidata.org |
❌ 无法连接 —— 作者生卒年改用 Commons 分类页渲染结果(见 §4) |
velvetyne.fr 全站 |
❌ HTTP 500(/、/fonts/、/sitemap.xml、/fonts/<任何字体>/ 全部 500;首页显示罢工公告 "EN GRÈVE")。改用其 官方 GitLab 群组 gitlab.com/velvetyne 取得一手授权文件 |
github.com |
❌ 不可达(api.github.com 可用但 60 次/时限流) |
moma.org |
❌ 403 |
metmuseum.org |
❌ 429(限流) |
rawpixel.com/legal/terms |
⚠️ 200 但只返回 340 字节的机器人拦截壳,条款正文未读到 |
web.archive.org / archive.org |
❌ 不可达 |
monoskop.org |
❌ 500 |
证据留存: 13 个 Velvetyne 字体 + 27 个 Google 字体二进制已下载,cmap 检测脚本与结果见文末附录 A。临时文件在 %TEMP%\fontcheck\。
1. Display 字体候选(标题 / 海报用)
1A. ✅ 有完整西里尔支持(做俄文 / 乌克兰文标题安全)
cyr 列:cmap = 我下载二进制实测;meta = Google Fonts 官方 METADATA.pb 声明。
| # | 字体 | 来源站 | URL(实际访问) | 许可证 | Cyrillic | 字重 / 宽度 | 最适合角色 |
|---|---|---|---|---|---|---|---|
| 1 | Oswald | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/oswald/METADATA.pb · https://fonts.googleapis.com/css2?family=Oswald |
OFL 1.1 | ✅ cmap 全(А–я 31/31,cyr-ext +140 字形) | Variable wght 200–700 |
★ 超大标题 / 全大写海报字,工业窄体怪诞(grotesque),本项目第一选择 |
| 2 | Unbounded | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/unbounded/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31,总字形 1138) | Variable wght 200–900 |
全大写几何展示字 / 先锋标语;唯一系统最完整的几何先锋体 |
| 3 | Russo One | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/russoone/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31) | Static 单字重 | 工业科技标题 / 副标题,苏式机械感 |
| 4 | Rubik Mono One | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/rubikmonoone/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31) | Static 单字重 | 等宽方块数字 / 编号 / 巨型短标题 |
| 5 | Stalinist One | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/stalinistone/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31) | Static 单字重 | 宣传画 / 海报主标(气质最贴 1930s 苏联官方字体,注意它是"斯大林式"而非构成主义,慎用以免语义跑偏) |
| 6 | Alumni Sans | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/alumnisans/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic + cyrillic-ext) |
Variable wght 100–900 |
超窄体全大写副标题 / 数据条,窄到能塞进竖直栏 |
| 7 | Tektur | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/tektur/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31,cyr-ext +86) | Variable wdth 75–100 |
工程技术图纸感小标题 / 标签 |
| 8 | Jost | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/jost/METADATA.pb |
OFL 1.1 | ⚠️ cmap 俄文全,乌克兰文不全(UA 26/31;缺 ґ/є/і/ї 等) | Variable wght 100–900 |
★ 包豪斯几何正解(Futura 血统),副标题 / 引文 / 短正文 |
| 9 | Grotesk(Velvetyne) | Velvetyne / GitLab | https://gitlab.com/velvetyne/grotesk · 授权原文 https://gitlab.com/velvetyne/grotesk/-/raw/master/LICENSE.txt |
OFL 1.1(Copyright © 2010–2023 Frank Adebiaye,"with Reserved Font Name Grotesk") | ✅ cmap 全(31/31) | 4 字重(Extrafin / Mince / Regular / Gras)+ TTF/OTF | ★ "geometric sans serif with extra-large spacing" —— 字距极宽的几何无衬线,包豪斯版面感直接可用 |
| 10 | Lack(Velvetyne) | Velvetyne / GitLab | https://gitlab.com/velvetyne/lack |
OFL 1.1 | ✅ cmap 全(А–я 31/31,cyr-ext +124,是本次测得西里尔覆盖最广的字体) | Regular + Italic | 大标题与正文皆可(自述 "works well as a display typeface… also designed to perform in all kind of text sizes") |
| 11 | Le Murmure(Velvetyne) | Velvetyne / GitLab | https://gitlab.com/velvetyne/murmure · https://gitlab.com/api/v4/projects/velvetyne%2Fmurmure |
OFL 1.1 | ✅ cmap 全(31/31) | 单字重(otf/ttf + woff/woff2 已备) | 标题 / 短句,手写几何混合体 |
| 12 | Pilowlava(Velvetyne / StudioTriple) | Velvetyne · StudioTriple | https://gitlab.com/StudioTriple/pilowlava · 授权 https://gitlab.com/StudioTriple/pilowlava/-/raw/master/License.txt · README https://gitlab.com/StudioTriple/pilowlava/-/raw/master/README.md |
OFL 1.1(Copyright © 2019–2022 Anton Moglia & Jérémy Landes) | ✅ cmap 全(31/31)——README 原文:"Support for Cyrillic was added in 2022 by Maksym Kobuzan" | 单一字重(另有 Pilowlava Atome 打孔变体) |
先锋实验巨型字 / 单张海报的视觉爆点,全大写不行(它是圆滑液态立面体) |
| 13 | Golos Text | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/golostext/METADATA.pb · https://api.fontsource.org/v1/fonts |
OFL 1.1 | ✅ cmap 全(31/31,cyr-ext +80) | Variable wght 400–900 |
俄文优先的中性字体,可当"副标题字号"的标题层 |
| 14 | Onest | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/onest/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31,cyr-ext +70) | Variable wght 100–900 |
副标题 / 大段正文 |
| 15 | Manrope | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/manrope/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31) | Variable wght 200–800 |
UI / 副标题 / 正文,几何感干净 |
| 16 | Montserrat | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/montserrat/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
Variable wght 100–900 |
几何无衬线正文 / 副标题(包豪斯城市字体血统) |
| 17 | Roboto Condensed | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/robotocondensed/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
Variable wght 100–900 |
工业窄体标题 / 表格 / 长列表 |
| 18 | Advent Pro | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/adventpro/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
Variable wdth 100–200 |
极窄全大写标签 / 竖排 |
| 19 | Yanone Kaffeesatz | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/yanonekaffeesatz/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
Variable wght 200–700 |
窄体木活字感标题 |
| 20 | Cuprum | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/cuprum/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
Variable wght 400–700 |
工业窄体正文 / 图注 |
| 21 | Rubik | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/rubik/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic + cyrillic-ext) |
Variable wght 300–900 |
微圆角几何,标语 / 数字 |
| 22 | Ruslan Display | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/ruslandisplay/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
Static | 古罗斯装饰体(与构成主义冲突,仅作"革命前"对照层) |
| 23 | Yeseva One | Google Fonts | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/yesevaone/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
Static | 同上的"旧世界"对照层 |
1B. ❌ 无西里尔支持(只能做拉丁文;这一节是本报告最需要你注意的结论)
| 字体 | 来源 | URL | 许可证 | Cyrillic | 字重/宽度 | 说明 |
|---|---|---|---|---|---|---|
| Anton | Google Fonts | …/ofl/anton/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Static | 最常用的 Druk/Impact 类超粗展示体,没有西里尔 |
| Archivo Black | Google Fonts | …/ofl/archivoblack/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Static | 同上 |
| Archivo | Google Fonts | …/ofl/archivo/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Variable wdth 62–125 + wght 100–900 |
⚠️ "Archivo Expanded" 不是独立字体:它就是 Archivo 变量字体把 wdth 拉到 125 —— 但没有西里尔 |
| Bebas Neue | Google Fonts | …/ofl/bebasneue/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Static | Google 版无西里尔(网上流传的"Bebas 有西里尔"是第三方改版,未找到可商用授权出处) |
| Barlow Condensed | Google Fonts | …/ofl/barlowcondensed/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Static(多字重) | 窄体,无西里尔 |
| Big Shoulders Display | Google Fonts | …/ofl/bigshouldersdisplay/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Variable wght 100–900 |
芝加哥工业风,无西里尔 |
| League Gothic | Google Fonts | …/ofl/leaguegothic/METADATA.pb |
OFL 1.1 | ❌(meta 无 cyrillic) | Variable wdth 75–100 |
经典木活字窄体,无西里尔 |
| Syne | Google Fonts | …/ofl/syne/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Variable wght 400–800 |
先锋艺术馆体(与构成主义气质很近,可惜无西里尔) |
| Space Grotesk | Google Fonts | …/ofl/spacegrotesk/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Variable wght 300–700 |
技术怪诞体 |
| Chivo | Google Fonts | …/ofl/chivo/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Variable wght 100–900 |
怪诞体 |
| Bricolage Grotesque | Google Fonts | …/ofl/bricolagegrotesque/METADATA.pb |
OFL 1.1 | ❌(meta 无 cyrillic) | Variable opsz 12–96 + wdth 75–100 + wght 200–800 |
工业怪诞体,无西里尔 |
| Instrument Sans | Google Fonts | …/ofl/instrumentsans/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Variable wdth 75–100 + wght 400–700 |
— |
| Anybody | Google Fonts | …/ofl/anybody/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Variable wdth 50–150 + wght 100–900 |
宽度轴极大,但无西里尔 |
| Reem Kufi | Google Fonts | …/ofl/reemkufi/METADATA.pb |
OFL 1.1 | ❌(只有 arabic/latin) | Variable wght 400–700 |
阿拉伯几何体,与西里尔无关 |
| Saira Condensed / Teko / Antonio / Bungee / Familjen Grotesk / Public Sans / Space Mono / Archivo Narrow | Google Fonts | 同上规律 | OFL 1.1 | ❌ cmap 0/31 | — | 全部实测无西里尔 |
| Format 1452(Velvetyne) | GitLab | https://gitlab.com/velvetyne/format-1452 · 授权 …/-/raw/master/LICENSE.txt |
OFL 1.1 | ❌ cmap 0/31 | 单字重 | ★ 自述 "a Din-like typeface built with modules, without any optical corrections" —— 气质是本次最贴构成主义的字体之一(模块化、零光学修正),但只有拉丁 |
| Sligoil(Velvetyne) | GitLab | https://gitlab.com/velvetyne/sligoil · 授权 …/-/raw/main/LICENSE.txt |
OFL 1.1 | ❌ cmap 0/31 | Micro / MicroMedium / MicroBold + Variable | ★ 自述 "a monospace typeface with large inktraps" —— 工程感等宽,无西里尔 |
| Sporting Grotesque(Velvetyne) | GitLab | https://gitlab.com/velvetyne/Sporting-Grotesque |
OFL 1.1 | ❌ cmap 0/31 | Regular / Bold + 斜体 | 怪诞体,无西里尔 |
| Basteleur(Velvetyne) | GitLab | https://gitlab.com/velvetyne/basteleur · …/-/raw/master/LICENSE.txt |
OFL 1.1(© 2021 Keussel) | ❌ cmap 0/31 | 多字重 OTF | 塔罗牌启发的中世纪/Cooper 混合体,与项目方向不符 |
| Avara(Velvetyne) | GitLab | https://gitlab.com/velvetyne/Avara |
仓库内含 README.md/FONTLOG.txt,未见独立 LICENSE 文件 → 许可证未找到(Velvetyne 官网 500 无法核对) |
❌ cmap 0/31 | 多字重 | 过渡衬线无曲线体 |
| Gulax / Mess / Compagnon / Lineal / mourier(Velvetyne) | GitLab | https://gitlab.com/velvetyne/<slug> |
Gulax ✅ OFL 1.1;Mourier ✅ OFL 1.1(© 1971 Eric Mourier);Componon/Lineal/Mess 未找到独立授权文件 | ❌ cmap 0/31(已测 Gulax / Mess / Compagnon / Lineal) | — | 实验体,无西里尔 |
| Terminal Grotesque | GitLab(非 Velvetyne 命名空间) | https://gitlab.com/raphaelbastide/Terminal-Grotesque · …/-/raw/main/LICENSE.md |
OFL 1.1,但授权头写的是 "Copyright (c) 2012, Tyler Finck,with Reserved Font Name: "Blackout"" —— 字体名与授权名不一致,属于仓库版权声明残留,商用前请人工确认 | 未测(仓库内无 ttf/otf,只有源码) | — | 像素怪诞体 |
| Fontshare 全部 100 款 | Fontshare / ITF | https://api.fontshare.com/v2/fonts(实测返回 100 条) |
见 §1C | ❌ 100 款中 0 款 的 languages 字段含 Russian / Ukrainian / Cyrillic / Bulgarian / Serbian(Cyrillic) / Belarusian / Macedonian |
— | Clash Display / Clash Grotesk / Cabinet Grotesk / Satoshi / Switzer / Supreme / Technor / Tanker / Zina / Boxing / Kihim / Segment / Striper / Stardom 等——全部只有拉丁 |
1C. Fontshare / ITF 授权(重要,与我预先的假设不同)
https://www.fontshare.com/licenses/itf-ffl 是纯 JS 单页,web_fetch 与 curl 只能拿到 1.7KB 空壳。我改为反查它自己的前端 bundle https://www.fontshare.com/js/main.d962d2d8.js(402KB),里面内联了渲染该页所用的完整 EULA 数据。实测原文摘录:
- 许可证名:ITF Free Font License (FFL),
Version 2.0 - 17 Aug 2026,licenseType: "Closed Source" - 授予:「a non-exclusive, non-assignable, non-transferable and terminable license to access, download, install, store and use the Font Software for personal or commercial purposes, free of charge and for an unlimited period of time」
- 媒介:「You may use the Font Software in any media, including Print, Websites, Mobile or Desktop Applications, Digital Images, Digital Advertising, Social Media, ePublishing, Video, Broadcasting and Games, at any scale」
- 允许自托管:「You may self-host the Font Software on your own servers or infrastructure for use on your own websites and applications, including through standard webfont technologies such as CSS
@font-face. Self-hosting by end users is permitted and recommended」 - 署名:非强制 —「You may, but are not required to, identify or credit Indian Type Foundry or Fontshare」
- ⛔ 明确禁止(对本项目影响很大):
- 「You may not modify, edit, adapt, translate, reverse engineer, decompile, disassemble or otherwise alter the Font Software… This includes modifying or replacing glyphs, subsetting, format conversion, or altering font names, copyright information… or other metadata.」
- 不得再分发:「may not… be distributed, duplicated, loaned, resold, sublicensed, transferred, donated, given away or otherwise made available to any other person or entity… This includes distributing the Font Software through another font website, font library, marketplace, repository, download service, application or platform」
- 「You may not create a Derivative Work… without the prior written consent of the Licensor.」
- 同页自述:「All Fontshare fonts are 100% free for personal and commercial use.」两个层级:Closed Source(ITF FFL,ITF 自有)+ Open Source(SIL OFL,如 Archivo / Bebas Neue / Oswald / Anton / Manrope / Space Grotesk / Epilogue / Public Sans / Work Sans / Teko / Red Hat Display / Poppins / Montserrat / Literata / Crimson Pro / Fraunces? 等——这批在 Fontshare 上是 OFL)。
结论: Fontshare 的 OFL 字体可以像 Google Fonts 一样随便用;Fontshare 的 ITF FFL 字体(Clash Display 等)可以商用、可以 CSS 自托管,但「不许 subset、不许格式转换、不许放进你的 GitHub/仓库分发」——这会让
next/font、Fontsource、glyphhanger这类常规前端工作流违规。加上它们 100% 没有西里尔,本项目的俄文场景建议直接排除 Fontshare 的 Closed Source 层。
1D. Druk 的免费替代——核实结果
Druk(Commercial Type 出品)本身未找到任何免费/开源授权,是纯商业零售字体。气质接近且授权明确免费商用的替代(按"窄 + 超重 + 全大写"排序):
| 替代 | 许可证 | 西里尔 | 与 Druk 的差异 |
|---|---|---|---|
| Oswald 700 | OFL 1.1 | ✅ | 最接近 Druk 的窄体压缩感,且是唯一同时满足"超窄 + 西里尔"的选择 |
| Anton | OFL 1.1 | ❌ | 更粗更方,拉丁专用 |
| Archivo Black | OFL 1.1 | ❌ | 极粗怪诞,拉丁专用 |
| Format 1452(Velvetyne) | OFL 1.1 | ❌ | 模块化 DIN 体,工业感更强,拉丁专用 |
| Big Shoulders Display | OFL 1.1 | ❌ | 高瘦窄体,拉丁专用 |
| League Gothic | OFL 1.1 | ❌ | 木活字窄体,拉丁专用 |
fontalternatives.com上列有若干"Druk 免费替代"(搜索命中https://fontalternatives.com/alternatives/druk/),但我没有在该站读到任何授权原文,且它推荐的多数是商业字体试用版 —— 不建议据此使用,标记为未找到可核实的免费替代清单。
1E. 字体分发渠道(已在本次核验)
| 渠道 | URL(实际访问) | 核验结果 |
|---|---|---|
| Fontsource | https://fontsource.org/ · API:https://api.fontsource.org/v1/fonts |
✅ 200,API 返回 2103 条。逐条含 subsets / weights / license / variable。实测:oswald(subsets 含 cyrillic+cyrillic-ext,OFL-1.1,variable)· unbounded(同)· golos-text(cyrillic+cyrillic-ext,OFL-1.1)· jetbrains-mono(OFL-1.1)· geist-mono(OFL-1.1)· rubik-mono-one(OFL-1.1)· russo-one(OFL-1.1)。这是把 OFL 字体以 npm 包引入 + 自托管的最干净路径 |
| Google Fonts 官方仓库 | https://cdn.jsdelivr.net/gh/google/fonts@main/<ofl\|apache>/<slug>/METADATA.pb |
✅ 逐个字体返回 license / category / subsets / axes 原文 |
| Velvetyne Type Foundry | https://velvetyne.fr/ → HTTP 500 |
❌ 官网当前不可用;改用 https://gitlab.com/api/v4/groups/velvetyne/projects?per_page=100&include_subgroups=true → ✅ 返回 34 个项目(完整清单见附录 B) |
1F. Velvetyne 先锋派字体完整清单(从官方 GitLab 群组取得,34 项)
直接从 https://gitlab.com/api/v4/groups/velvetyne/projects?per_page=100&include_subgroups=true 取得的 34 个 项目及官方描述(节选与项目相关者):
| 项目 | 官方描述(原文) | URL |
|---|---|---|
grotesk |
"Grotesk is a geometric sans serif typeface with extra-large spacing." | https://gitlab.com/velvetyne/grotesk |
format-1452 |
"Format 1452 is a Din-like typeface built with modules, without any optical corrections." | https://gitlab.com/velvetyne/format-1452 |
sligoil |
"A monospace typeface with large inktraps." | https://gitlab.com/velvetyne/sligoil |
Gulax |
"Again another \"experimental\" monolinear sans. Enjoy or not." | https://gitlab.com/velvetyne/Gulax |
Sporting-Grotesque |
"A grotesque typeface by @LucasLeBihan" | https://gitlab.com/velvetyne/Sporting-Grotesque |
mourier |
"Mourier is a quasi-abstract geometric typeface originally created by Eric Mourier in 1971." | https://gitlab.com/velvetyne/mourier |
Facade-font |
"Façade is a typeface created from the architectural grid of the ÉSAD Orléans façade." | https://gitlab.com/velvetyne/Facade-font |
cantique |
"The Cantique typeface marks the marriage between human calligraphy and geometric construction shapes with a modular approach." | https://gitlab.com/velvetyne/cantique |
lack |
"Lack is a brave, contemporary and experimental typeface… works well as a display typeface, but is also designed to perform in all kind of texts sizes." | https://gitlab.com/velvetyne/lack |
letters |
"Letters is a display typeface… Designed for experimental use, it performs best at large sizes." | https://gitlab.com/velvetyne/letters |
murmure |
"Le Murmure is a custom open-source typeface designed by Jérémy Landes for the design agency Murmure…" | https://gitlab.com/velvetyne/murmure |
Mess |
"An illegible typeface by Tezzo Suzuki." | https://gitlab.com/velvetyne/Mess |
lineal, compagnon, lineal, interlope, anthony, kaerukaeru, backout, ouroboros, Trickster, vg5000, fungal, jgs, amdal, imago-mundi-mei, Happy-Times-at-the-IKOB, flor-des-ruina, feroniapi, Velvetyne-Notdef, Velvetyne-Standard-Character-Set, velvetyne-libre-friends |
(完整 34 项清单见附录 B) | https://gitlab.com/velvetyne/<slug> |
StudioTriple/pilowlava |
"A sloppy open-source typeface released on Velvetyne Type Foundry"(2022 年加入西里尔) | https://gitlab.com/StudioTriple/pilowlava |
velvetyne/pilowlava3D |
"3D models of the Pilowlava font glyphs" | https://gitlab.com/velvetyne/pilowlava3D |
关于 Cirrus: 用户点名的 Cirrus 未找到可验证的一手页面。
velvetyne.fr/fonts/cirrus/返回 HTTP 500;在 Velvetyne 官方 GitLab 群组的 34 个项目中没有 Cirrus;GitLab 全站搜索cirrus返回 40 条结果中无任何字体项目。→ 标记为「未找到」(注:https://www.velvetyne.fr/fonts/terminal-grotesque/出现在搜索引擎索引里,但实测 500,同样无法作为授权依据)。
2. 正文 / 中性字体对 + 等宽字体
2A. 有西里尔的正文候选
| 字体 | URL(实际访问) | 许可证 | Cyrillic | 字重 | 角色 |
|---|---|---|---|---|---|
| Golos Text | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/golostext/METADATA.pb · https://api.fontsource.org/v1/fonts |
OFL 1.1 | ✅ cmap 全(31/31,cyr-ext +80) | wght 400–900 |
★ 首选正文:俄文字形是第一语言设计的,中性、朴素、无文化错位 |
| Onest | …/ofl/onest/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31,cyr-ext +70) | wght 100–900 |
正文 / UI,几何感略强 |
| Manrope | …/ofl/manrope/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31) | wght 200–800 |
正文 / 副标题 |
| Inter | …/ofl/inter/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic + cyrillic-ext) |
opsz 14–32 + wght 100–900 |
万能 UI/正文(下载被限流,仅元数据验证) |
| Montserrat | …/ofl/montserrat/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
wght 100–900 |
几何正文(包豪斯城市字体) |
| Raleway / Noto Sans / Open Sans / Nunito Sans / PT Sans / Commissioner / Wix Madefor Display / Exo 2 / Jura / Didact Gothic / Philosopher / Podkova / Tenor Sans | https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/<slug>/METADATA.pb |
OFL 1.1 | ✅ meta 含 cyrillic |
见各自 METADATA | 备用池 |
| Lack(Velvetyne) | https://gitlab.com/velvetyne/lack |
OFL 1.1 | ✅ cmap 全 + cyr-ext 124 | Regular/Italic | 想用先锋体做正文时的唯一现实选择 |
| Grotesk(Velvetyne) | https://gitlab.com/velvetyne/grotesk |
OFL 1.1 | ✅ cmap 全 | 4 字重 | 字距极宽,做小字正文偏浪费,适合引言/图注 |
2B. 无西里尔的正文候选(拉丁项目可用)
Instrument Sans(wdth 75–100+wght 400–700)· Public Sans(wght 100–900)· Bricolage Grotesque(opsz+wdth+wght 三轴)· Space Grotesk(wght 300–700)· Chivo(wght 100–900)· Familjen Grotesk(wght 400–700)—— 全部 OFL 1.1,全部实测 cmap 无西里尔。
2C. 等宽字体
| 字体 | URL(实际访问) | 许可证 | Cyrillic | 字重 / 宽度 | 备注 |
|---|---|---|---|---|---|
| JetBrains Mono | …/ofl/jetbrainsmono/METADATA.pb · https://api.fontsource.org/v1/fonts |
OFL 1.1 | ✅ cmap 全(31/31,总字形 976) | Variable wght 100–800 |
★ 首选:技术/工程图纸气质,西里尔完整,代码块可读性最好 |
| Geist Mono | …/ofl/geistmono/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31,cyr-ext +38) | Variable wght 100–900 |
次选,更冷静的瑞士感 |
| Roboto Mono | …/ofl/robotomono/METADATA.pb |
OFL 1.1 | ✅ cmap 全(31/31,cyr-ext +179,覆盖最广) | Variable wght 100–700 |
西里尔扩展覆盖冠军 |
| IBM Plex Mono | …/ofl/ibmplexmono/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic + cyrillic-ext) |
Static 多字重 | 企业级工程感(下载被限流,仅元数据验证) |
| PT Mono | …/ofl/ptmono/METADATA.pb |
OFL 1.1 | ✅ meta(cyrillic) |
Static | 俄文字体厂 ParaType 出品 |
| Space Mono | …/ofl/spacemono/METADATA.pb |
OFL 1.1 | ❌ cmap 0/31 | Static | 有怪诞味但无西里尔 |
| Sligoil(Velvetyne) | https://gitlab.com/velvetyne/sligoil |
OFL 1.1 | ❌ cmap 0/31 | Micro / Medium / Bold + Variable | ★ 「large inktraps」的工程感等宽,视觉上最贴构成主义,但只有拉丁——可作纯英文/数字层的等宽 |
| Tabular / RX100(Fontshare) | https://api.fontshare.com/v2/fonts |
ITF FFL(Closed Source,禁 subset/再分发) | ❌ | Variable | 不推荐(见 §1C) |
3. 纹理与效果素材源
3A. ✅ 已核验授权的一手来源
| 效果类别 | 站点 | 具体页面 URL(实际访问) | 授权(页面原文) | 格式 / 分辨率 | CSS/SVG 可替代? |
|---|---|---|---|---|---|
| 纸张 / 牛皮纸 / 新闻纸 | ambientCG | https://ambientcg.com/view?id=Paper001 · Paper002 · Paper003(creaced 折痕) · Paper004 · Paper005(cardboard packaging) · Paper006 · Cardboard001–Cardboard004 · CardboardSet001 · CardboardSubstance001 |
CC0 1.0 — 授权页 https://ambientcg.com/license 原文:「All ambientCG assets are provided under the Creative Commons CC0 1.0 Universal License. This applies to the downloadable asset files and the material preview renders」「You can copy, modify, distribute and perform the assets, even for commercial purposes, all without asking permission」 |
JPG + PBR 贴图组(含 PNG 置换/法线),素材编号经 https://ambientcg.com/api/v1/full_json(10.79 MB,2902 个资产)按 tag 过滤确认存在 |
⚠️ 半可:SVG feTurbulence 能做出接近的纤维颗粒,但没有真实纸浆层次 |
| 纸张(通用) | Poly Haven | https://polyhaven.com/textures |
CC0 — 授权页 https://polyhaven.com/license 原文:「Our assets are all licensed as CC0, which is effectively Public Domain even in jurisdictions that do not support the Public Domain… You can use our assets for any purpose, including commercial work. You do not need to give credit」 |
4K–8K JPG/EXR,PBR | ⚠️ 半可 |
| 纸张纹理(浏览入口) | Wikimedia Commons | https://commons.wikimedia.org/wiki/Category:Paper_textures(实测该分类含 101 个文件) |
⚠️ 分类内逐文件授权不一,必须逐个看文件页(我实测到 PD / CC BY / CC BY-SA 混排) | 混合,多为 JPG/TIF | ✅ 见 3B |
| 半调网点(halftone) | Wikimedia Commons | https://commons.wikimedia.org/wiki/File:Halftoning_introduction.svg |
Public domain(LicenseShortName: Public domain,作者 "Slippens / derivative work: McSush") |
SVG,260×310(3 KB)—— 是小图,当图例/纹理因子用 | ✅ 强烈建议用 CSS/SVG 生成(见 3B) |
| 半调网点(CMYK 网屏) | Wikimedia Commons | https://commons.wikimedia.org/wiki/File:Cmyk_AM_screen.png |
CC BY-SA 4.0(需署名 + 相同方式共享 → 与"免费商用无义务"不符,谨慎) | PNG,500×701 | ✅ |
| 半调网点(历史原版) | Wikimedia Commons | https://commons.wikimedia.org/wiki/File:Autotypie_1882_Meisenbach.png |
Public domain(页面原文:「The author died in 1912, so this work is in the public domain in its country of origin…」+ PD-Mark) | PNG,250×261(很小) | ✅ |
| 复古印刷套印错位 / 叠印色块 | Wikimedia Commons | https://commons.wikimedia.org/wiki/File:Blau_zusammendruck.jpg |
Public domain(页面原文:「This work is ineligible for copyright and therefore in the public domain because it consists entirely of information that is common property」) | JPG,250×705 | ✅ 首选 CSS 方案(mix-blend-mode + 位移,见 3B) |
| 印刷网点(浏览入口) | Wikimedia Commons | https://commons.wikimedia.org/wiki/Category:Halftone(实测 73 个文件) |
⚠️ 逐文件授权不一 | 混合 | ✅ |
| 网格纸 / 工程绘图纸(毫米格) | Wikimedia Commons | https://commons.wikimedia.org/wiki/File:Graph_paper_mm_green_A4.svg |
CC0 1.0(LicenseShortName: CC0,UsageTerms: Creative Commons Zero, Public Domain Dedication,作者 László Németh) |
SVG,744×1052(62 KB),A4 毫米格 | ✅ 但 SVG 已是最优解(无损、可改色、体积极小) |
| 网格纸(无标尺版) | Wikimedia Commons | https://commons.wikimedia.org/wiki/File:MmPapier_orange_no_scale.svg |
CC0 1.0(作者 H005) | SVG,1052×744(1 KB) | ✅ |
| 工程图纸(浏览入口) | Wikimedia Commons | https://commons.wikimedia.org/wiki/Category:Graph_paper(实测 84 个文件) |
⚠️ 逐文件授权不一 | 混合 | ✅ |
3B. ⛔ 未能核验的来源(不要照用)
| 站点 | URL | 问题 |
|---|---|---|
| Rawpixel | https://www.rawpixel.com/category/53/public-domain(HTTP 200)· https://www.rawpixel.com/legal/terms(HTTP 200,但正文只返回 340 字节机器人壳) |
未找到可读的授权原文 → 无法确认「public domain」条目内是否混有付费/CC BY 素材。标记未找到 |
| NYPL Digital Collections | https://digitalcollections.nypl.org/(HTTP 200 / 212 字节,纯 JS 壳) |
单件 Rights Statement 未能读到 → 未找到 |
| The Met Open Access | https://www.metmuseum.org/art/collection/search?showOnly=openAccess |
HTTP 429(限流),未取得页面 → 未找到 |
| MoMA | https://www.moma.org/artists/4970 |
HTTP 403 → 未找到 |
| Getty | https://www.getty.edu/art/collection/(200) |
未定位到 1920s 苏联海报的 Open Content 条目 → 未找到 |
| Smithsonian Open Access | https://www.si.edu/openaccess |
HTTP 403 → 未找到 |
| Lost & Taken / Toptal Subtle Patterns | https://lostandtaken.com/、https://www.toptal.com/designers/subtlepatterns/ |
均 HTTP 403 → 授权未找到 |
| Transparent Textures | https://www.transparenttextures.com/ |
连接超时 → 未找到 |
| Hero Patterns | https://heropatterns.com/(200) |
站点可达,但本次未读到其授权页原文 → 授权未找到(其模式为 CSS/SVG 内联,若要用请先自行核对) |
| 扫描划痕 / 灰尘 / 复印机伪影 | — | 未找到任何授权可核实的高质量位图来源。该类效果本身也最适合程序化生成(见 3C-5) |
| 噪点 / 胶片颗粒 | — | 未找到需要下载的理由:feTurbulence 方案在质量与体积上都优于位图(见 3C-3) |
3C. 不用图片:纯 CSS / SVG 实现同样的效果
本项目 6 类效果中有 5 类可以零字节实现。只有「真实纸张纤维」建议用 CC0 位图。
① 新闻纸 / 纸纤维(SVG feTurbulence 双层叠加)
<svg width="0" height="0" aria-hidden="true" style="position:absolute">
<filter id="paper">
<!-- 粗颗粒:纸浆纤维 -->
<feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="4" seed="7" result="fiber"/>
<!-- 细颗粒:印刷网点感 -->
<feTurbulence type="fractalNoise" baseFrequency="0.04" numOctaves="2" seed="3" result="blotch"/>
<feMerge result="grain">
<feMergeNode in="fiber"/><feMergeNode in="blotch"/>
</feMerge>
<!-- 去色 + 压平对比,只保留灰度亮度扰动 -->
<feColorMatrix in="grain" type="saturate" values="0" result="gray"/>
<feComponentTransfer in="gray">
<feFuncA type="linear" slope="0.22" intercept="0"/>
</feComponentTransfer>
</filter>
</svg>
<style>
.paper {
background-color: #efe7d6; /* 底纸色,构成主义常用米白/土黄 */
position: relative;
}
.paper::after { /* 纹理层,不挡内容 */
content: ""; position: absolute; inset: 0;
filter: url(#paper);
mix-blend-mode: multiply;
opacity: .55; pointer-events: none;
}
</style>
② 半调网点(halftone dots)—— 纯 CSS,两行搞定
/* 45° 旋转的圆点网屏,等效于 AM 印刷网 */
.halftone {
background-image: radial-gradient(circle at center, #111 0 1.6px, transparent 1.7px);
background-size: 6px 6px; /* 网屏线数:改这里控制粗细 */
background-position: 0 0;
/* 视觉上加角度(可选):整层旋转 */
transform: rotate(0deg);
}
/* 需要真正的 45° 网屏(网点对角线排列)时,用 SVG pattern 更干净: */
<svg width="100%" height="100%">
<defs>
<pattern id="am45" width="6" height="6" patternUnits="userSpaceOnUse"
patternTransform="rotate(45)">
<circle cx="3" cy="3" r="1.6" fill="currentColor"/>
</pattern>
</defs>
<rect width="100%" height="100%" fill="url(#am45)"/>
</svg>
进阶:要「网点随明暗变化」的真半调(halftone screen),用 SVG 滤镜对图片做
feImage+feTile+feComposite组合,或直接对图片套filter: url(#halftone)(feTurbulence+feComponentTransfer硬阈值)。纯 CSS 做不出随亮度变化的点径,这一点必须承认。
③ 噪点 / 胶片颗粒
/* 极轻量方案:CSS 渐变伪随机噪声(无需滤镜,GPU 友好) */
.grain {
background-image:
repeating-conic-gradient(#0000 0% 25%, #0003 0% 50%);
background-size: 4px 4px;
mix-blend-mode: overlay;
}
<!-- 更好看的方案:SVG turbulence,可平铺、可动画(颗粒感"呼吸") -->
<filter id="grain">
<feTurbulence type="fractalNoise" baseFrequency="0.75" numOctaves="3" stitchTiles="stitch"/>
<feColorMatrix type="saturate" values="0"/>
<feComponentTransfer><feFuncA type="table" tableValues="0 0.35"/></feComponentTransfer>
</filter>
④ 复古套印错位 / 叠印(misregistration)—— 强烈建议纯 CSS
.overprint { position: relative; color: #d33; font-weight: 900; letter-spacing: -.02em; }
/* 用两个偏移的伪元素模拟青/品红/黄版套偏 */
.overprint::before,
.overprint::after {
content: attr(data-text);
position: absolute; inset: 0;
mix-blend-mode: multiply; /* 关键:乘算 = 油墨叠印 */
}
.overprint::before { color: #06c; transform: translate(-2px, 1.5px); opacity: .85; }
.overprint::after { color: #fc0; transform: translate(2px, -1px); opacity: .8; }
/* 大色块的三色叠印:三层 + screen/multiply */
.block { background:#e8442c; mix-blend-mode: multiply; }
.block--c { background:#1b8fd0; mix-blend-mode: screen; transform: translate(3px,-2px); }
.block--y { background:#f2c200; mix-blend-mode: multiply; transform: translate(-3px,2px); }
构成主义的红/黑对角构图就是靠
multiply叠出深色交叠区的,这比任何位图都干净、可响应式、可动画。
⑤ 扫描划痕 / 灰尘 / 复印机伪影
<filter id="photocopy">
<!-- 高频噪声 → 硬阈值 → 变成划痕/斑点 -->
<feTurbulence type="fractalNoise" baseFrequency="0.015 0.6" numOctaves="2" seed="12" result="scratch"/>
<feComponentTransfer in="scratch" result="hard">
<feFuncA type="discrete" tableValues="0 0 0 0 0 0 0 0 0 0.9"/>
</feComponentTransfer>
<feBlend in="SourceGraphic" in2="hard" mode="multiply"/>
</filter>
baseFrequency="0.015 0.6"的关键在于 x 方向极低、y 方向较高 → 生成横向细长条纹 = 扫描线/划痕。改seed换一套划痕。比位图更可控、可无限随机。
⑥ 网格纸 / 工程绘图纸
/* 毫米格:细线 1mm + 粗线 5mm + 更粗 10mm,三层 repeating-linear-gradient */
.graph {
--fine: rgba(0,90,140,.20);
--mid: rgba(0,90,140,.35);
--bold: rgba(0,90,140,.55);
background-color: #f7fafc;
background-image:
repeating-linear-gradient(0deg, var(--fine) 0 1px, transparent 1px 10px),
repeating-linear-gradient(90deg, var(--fine) 0 1px, transparent 1px 10px),
repeating-linear-gradient(0deg, var(--mid) 0 1px, transparent 1px 50px),
repeating-linear-gradient(90deg, var(--mid) 0 1px, transparent 1px 50px),
repeating-linear-gradient(0deg, var(--bold) 0 2px, transparent 2px 100px),
repeating-linear-gradient(90deg, var(--bold) 0 2px, transparent 2px 100px);
background-size: 100px 100px, 100px 100px, 100px 100px, 100px 100px, 100px 100px, 100px 100px;
}
/* 蓝图(blueprint)变体:深蓝底 + 白线 */
.blueprint { background-color:#0b3b6f; --fine:rgba(255,255,255,.18); --mid:rgba(255,255,255,.3); --bold:rgba(255,255,255,.5); }
3D. 效果实现方式选型建议
| 效果 | 建议 | 理由 |
|---|---|---|
| 半调网点 | CSS/SVG | 无损缩放、可改色、0 字节;位图网点在高 DPI 屏上会摩尔纹 |
| 套印错位 | CSS | mix-blend-mode 语义正确,可响应式、可 hover 动画 |
| 颗粒/噪点 | SVG feTurbulence |
可平铺(stitchTiles)、可动画、体积极小 |
| 网格纸 | CSS 渐变 / CC0 SVG | CSS 完胜;若需可下载素材用 Graph_paper_mm_green_A4.svg(CC0) |
| 扫描划痕 | SVG feTurbulence 非等向 baseFrequency |
唯一可控的方案;位图来源本次未找到 |
| 真实纸张纤维 | ambientCG / Poly Haven 位图(CC0) | 纸浆层次与 PBR 凹凸是程序化生成做不出的 |
4. 公有领域构成主义图像素材
4A. 版权规则原文(来自 Commons 官方模板,逐字读取)
https://commons.wikimedia.org/wiki/Template:PD-Russia-1996 → 英文正文在 https://commons.wikimedia.org/w/index.php?title=Template:PD-Russia-1996/en&action=raw,原文:
This work is in the public domain in Russia according to article 1281 of the Civil Code of the Russian Federation, articles 5 and 6 of Law No. 231-FZ of the Russian Federation of December 18, 2006(Implementation Act for Book IV of the Civil Code)。 This usually means that one of the following conditions is fulfilled. 1. The author of this work died: (a) before January 1, 1942 or (b) between January 1, 1942 and January 1, 1946, did not work during the Great Patriotic War and did not participate in it. 2. This work was originally published anonymously or under a pseudonym: (a) before January 1, 1943 and the name of the author did not become known during 50 years after publication… 3. This work is a film… (a) first shown before January 1, 1943 … 4. This work is an information report (including photo report), created by an employee of TASS, ROSTA, or KarelfinTAG as part of official duties between July 10, 1925 and January 1, 1946 …
This work is in the public domain in the United States, because it was in the public domain in its home country (Russia) on the URAA date (January 1, 1996) — explanation: January 1, 1946 (fix date) + 50 years (since death of author) = January 1, 1996 — and it wasn't re-published for 30 days following initial publications in the U.S.
脚注(对 Klutsis 极其关键):
[2] If the author of this work was subjected to repression and rehabilitated posthumously, copyright term is counted from January 1 of the year following the year of rehabilitation.
https://commons.wikimedia.org/wiki/Template:PD-Russia(现行 70 年通则,英文正文 …/Template:PD-Russia/en&action=raw):
(a) The author died before January 1, {{CURRENTYEAR−74}} or (b) died between {{CURRENTYEAR−74}} and {{CURRENTYEAR−70}}…(模板运行时展开 → 2026 年即"死于 1952 年前"或"1952–1956 年间且未参加卫国战争")
https://commons.wikimedia.org/wiki/Template:PD-old-70:
This work is in the public domain in its country of origin and other countries and areas where the copyright term is the author's life plus 70 years or fewer.
美国规则(本次未直接访问美国版权局页面,仅依据上述 Commons 模板 + URAA 说明): 1929 年及以前出版的作品在美国已进入公有领域(逐年递增:1930 → 2026-01-01 到期);1929–1977 年出版且经 URAA 复权的作品,美国保护期为出版后 95 年。
4B. 作者生卒年(来自 Commons 分类页渲染结果,非记忆)
| 艺术家 | 分类页 URL(实际访问) | 生卒年(实测输出) |
|---|---|---|
| Gustav Klutsis | https://commons.wikimedia.org/wiki/Category:Gustav_Klutsis |
1895–1938 |
| Alexander Rodchenko | https://commons.wikimedia.org/wiki/Category:Alexander_Rodchenko |
1891–1956 |
| El Lissitzky | https://commons.wikimedia.org/wiki/Category:El_Lissitzky |
1890–1941 |
| Varvara Stepanova | https://commons.wikimedia.org/wiki/Category:Varvara_Stepanova |
1894–1958 |
| Lyubov Popova | https://commons.wikimedia.org/wiki/Category:Lyubov_Popova |
1889–1924 |
| Kazimir Malevich | https://commons.wikimedia.org/wiki/Category:Kazimir_Malevich |
1878–1935 与 1879–1935 两个值同时出现在页面(公历/儒略历换算差异)→ 通行说法 1879–1935 |
⚠️
Creator:命名空间页面(Creator:Aleksandr_Rodchenko等)实测只含{{Creator | Wikidata = Q…}},日期由 Wikidata 动态带出,而 Wikidata 本机不可达 → 故改用分类页(其渲染结果内嵌了{{Creator}}展开后的年份)。
4C. 风险表(俄罗斯规则 + 美国规则分开判定)
| 作品 / 艺术家 | 卒年 | 俄罗斯 PD 年份 | 美国 PD 年份 | 现在能商用吗 | 原因 |
|---|---|---|---|---|---|
| Lyubov Popova(1889–1924) | 1924 | 2000-01-01(1924+70,且卒于 1942 前 → PD-Russia-1996) | 已 PD(1996-01-01 URAA 时已在俄 PD) | ✅ 可自由商用 | 俄美双 PD,零风险 |
| Kazimir Malevich(1879–1935) | 1935 | 2006-01-01(PD-Russia-1996,卒于 1942 前) | 已 PD(同上) | ✅ 可自由商用 | 俄美双 PD,零风险 |
| El Lissitzky(1890–1941-12-30) | 1941 | 2012-01-01;且卒于 1942-01-01 之前 → 明确套用 PD-Russia-1996 | 已 PD | ✅ 可自由商用 | 死期只差 2 天,但恰好落在 1942-01-01 之前,规则适用无疑义 —— 这是本次最有价值的确认 |
| Gustav Klutsis(1895–1938) | 1938 | 表面 2009-01-01(卒于 1942 前 → PD-Russia-1996);但 1938 年被捕处决、据信 1956 年平反,若适用「镇压后平反」脚注 → 期限改从平反年起算,1956+70 = 2027-01-01 | 已 PD(URAA 时点在俄 PD) | ⚠️ 有风险 | 俄罗斯境内可能仍受保护至 2027-01-01。他的平反年份我未能在可达页面核实(未找到)。若网站面向俄罗斯/欧盟发行,建议在 2027 年前避免使用 Klutsis,或仅使用美国视角合法的副本并保留免责说明 |
| Aleksandr Rodchenko(1891–1956) | 1956 | 2027-01-01(1956+70;卒于 1942 后 → 不适用 PD-Russia-1996) | 仅 1930 年及以前出版的作品已 PD(1930+95=2025,2026-01-01 起安全);1931 年后的作品仍在美国保护期内 | ⚠️ 部分可用 / 有风险 | 俄罗斯与欧盟 2027-01-01 前仍受保护。做全球站点有残余风险;只取 1930 年前出版物风险最低 |
| Varvara Stepanova(1894–1958) | 1958 | 2029-01-01(1958+70) | 仅 1930 年及以前出版的作品已 PD | ⚠️ 部分可用 / 有风险 | 与 Rodchenko 同期,风险略高(晚 2 年) |
| Alexander Vesnin | — | 分类页实测存在但未取到生卒年(HTTP reset)→ 未找到 | — | 未知 | 未核实 |
给网页项目的实操结论:
- 零风险池(可以直接用、可以商用、不需要署名):Popova、Malevich、Lissitzky。 这三位已构成本次所需的全部视觉语言(至上主义方块/圆/十字、红楔子、PROUN 构成)。
- 有条件使用池:Rodchenko、Stepanova —— 只选 1930 年及以前出版 的作品,并在页脚注明「作品在作者母国可能仍受保护,本页依据美国公有领域规则使用」。2027 / 2029 年后完全无碍。
- 回避池:Klutsis —— 2027 年前存在俄罗斯法域风险;若要使用,只用美国法域逻辑并明确限定,或直接换 Lissitzky 的同类拼贴海报。
- 绝对不要用「现代摄影师翻拍海报」的照片当素材。 见下节实测证据。
4D. 具体可下载页面 + 实测分辨率 + 授权
全部通过 Commons api.php?action=query&prop=imageinfo&iiprop=url|size|extmetadata 逐条读取。
| 作品 | 艺术家 / 年份 | 页面 URL(实际访问) | 实测分辨率 | 文件大小 | 页面授权(实测) |
|---|---|---|---|---|---|
| Beat the Whites with the Red Wedge(红楔子击败白军) | El Lissitzky, 1919 | https://commons.wikimedia.org/wiki/File:Beat_the_Whites_with_the_Red_Wedge.jpg |
1920 × 1572 | 0.29 MB | Public domain(UsageTerms: Public domain,Artist: El Lissitzky,Date: 1919) |
| Klinom Krasnim 变体 | El Lissitzky, 1919–1920 | https://commons.wikimedia.org/wiki/File:Klinom_Krasnim_by_El_Lisitskiy_(1920).jpg |
849 × 685 | 0.05 MB | Public domain |
| Soviet Power plus Electrification | Gustav Klutsis, 1929 | https://commons.wikimedia.org/wiki/File:Klutsis_(1929)_Soviet_Power_plus_electrification.png |
496 × 686 | 0.63 MB | Public domain(但见 §4C Klutsis 风险警告) |
| Under the Banner of Lenin for Socialist Construction | Gustav Klutsis, 1930 | https://commons.wikimedia.org/wiki/File:Under_the_banner_of_Lenin_for_socialist_construction_Poster_-_Gustavs_Klucis.jpg |
4000 × 5516 | 3.19 MB | Public domain(Credit: Google Arts & Culture)—— 本次找到的最高清苏联海报 |
| Black Square(黑方块) | Kazimir Malevich | https://commons.wikimedia.org/wiki/File:Malevich,_Kazimir_Severinovich_-_Black_Square.jpg |
8032 × 8000 | 52.14 MB | Public domain(Date 字段记 "1930 or 1932",与通行的 1915 年版不同 → 使用前请核对你是哪一个版本) |
| Stepanova 台球手 | Varvara Stepanova, 1920 | https://commons.wikimedia.org/wiki/File:Varvara_stepanova,_giocatori_di_biliardo,_1920.jpg |
4230 × 2394 | 5.51 MB | ⚠️ CC BY-SA 4.0,Artist: Francesco Bini,Credit: Own work —— 这是 2022 年现代摄影师的翻拍照片,不是原作的 PD 扫描件 |
| Long Live the USSR!(Klutsis 蓝图) | 1935 海报 | https://commons.wikimedia.org/wiki/File:Long_Live_the_USSR!_Blueprint_for_the_Brotherhood_of_all_Working_Classes_of_all_the_World%27s_Nationalities!_1935_(51724375511).jpg |
3433 × 2497 | 1.36 MB | ⚠️ CC BY 2.0,Artist: Steve Knight from Halstead, United Kingdom,Date 2021-12-04 —— 同为现代翻拍 |
🔴 本节最关键的一条警告: Commons 上大量「构成主义海报」的
Artist字段写的是21 世纪的摄影师,授权是 CC BY / CC BY-SA。这类文件的版权属于摄影师(翻拍的摄影有新版权,即使原作已 PD)。上表最后两行就是实证。筛选方法:看Artist字段是不是画家本人 +DateTimeOriginal是不是 1920s。 只有像Beat the Whites…(Artist: El Lissitzky, Date: 1919)和Under the banner of Lenin…(Credit: Google Arts & Culture)这种才是真·PD 扫描件。
4E. 博物馆 / 图书馆来源核验结果
| 来源 | URL | 结果 |
|---|---|---|
| Wikimedia Commons | https://commons.wikimedia.org/wiki/Category:<artist> · https://commons.wikimedia.org/wiki/Template:PD-Russia-1996 · Template:PD-old-70 |
✅ 本次唯一完整核验通过的高清 PD 来源。分类规模实测:Rodchenko 22 文件/41 子分类 · Lissitzky 22/34 · Klutsis 7/40 · Malevich 15/53 · Stepanova 6/36 · Popova 5/43 |
| MoMA | https://www.moma.org/artists/4970 |
❌ HTTP 403 → 未找到 |
| Getty | https://www.getty.edu/art/collection/ |
HTTP 200,但未定位到 1920s 苏联海报的 Open Access 条目 → 未找到 |
| NYPL Digital Collections | https://digitalcollections.nypl.org/ |
HTTP 200 / 212 字节 JS 壳,单件 Rights Statement 读不到 → 未找到 |
| The Met Open Access | https://www.metmuseum.org/art/collection/search?showOnly=openAccess |
❌ HTTP 429 → 未找到 |
| Smithsonian Open Access | https://www.si.edu/openaccess |
❌ HTTP 403 → 未找到 |
| Monoskop | https://monoskop.org/Monoskop |
❌ HTTP 500 → 未找到(另注:Monoskop 自身并非版权许可方,其 PDF 多为转载,不宜作为授权依据) |
| Yale / Beinecke、俄罗斯国立图书馆、ROSIZO、David King Collection | — | 未找到(本次未取得可访问的授权页;建议后续单独核查) |
5. 推荐组合
🏆 主推(俄文 / 多语言均安全)
| 角色 | 字体 | 理由 |
|---|---|---|
| 标题 | Oswald(Variable wght 200–700)OFL 1.1 · …/ofl/oswald/METADATA.pb · Fontsource oswald |
① 唯一同时满足「工业窄体压缩感(最接近 Druk)+ 完整西里尔」的字体;② cmap 实测西里尔 + cyr-ext 140 个字形,俄/乌/保加利亚文全覆盖;③ 一个变量字体覆盖 200–700,从巨型海报字到小标签只加载一个文件;④ OFL 允许 subset → 可裁到只用大写西里尔 + 数字,体积极小 |
| 正文 | Golos Text(Variable wght 400–900)OFL 1.1 · …/ofl/golostext/METADATA.pb |
① 俄文字形是第一语言设计的(不是拉丁字体硬塞西里尔),小字可读性最好;② 中性朴素,不与 Oswald 抢戏;③ Cyrillic + cyrillic-ext 80 字形;④ 与 Oswald 形成「窄 vs 常规」的清晰层级对立,这正是构成主义版面「对比而非渐变」的排版原则 |
| 等宽 | JetBrains Mono(Variable wght 100–800)OFL 1.1 · …/ofl/jetbrainsmono/METADATA.pb · Fontsource jetbrains-mono |
① 技术/工程图纸气质与「网格纸 + 蓝图」纹理天然同构;② 西里尔完整(31/31);③ 连字可关,做数据/编号/坐标标签很干净 |
| 纹理方案 A(位图,真实材质) | ambientCG Paper003(折痕纸)+ Paper006(米黄纸)CC0 1.0 · https://ambientcg.com/view?id=Paper003 · https://ambientcg.com/license |
① CC0 = 商用无需署名、可改、可再分发,法务零负担;② 含 PBR 凹凸贴图,background-blend-mode: multiply 叠一层就有真实纸浆凹陷;③ Paper003 的折痕正好呼应构成主义「被折叠过的宣传单」质感 |
| 纹理方案 B(零字节,程序化) | 纯 CSS/SVG 组合:feTurbulence 纸纤维 + radial-gradient 半调网点 + mix-blend-mode: multiply 三色套印错位(代码见 §3C-①②④) |
① 0 KB 请求、无损缩放、完美适配任何 DPI;② 可随主题变量换色(红→黑主题切换零成本);③ 可做滚动/hover 动画(颗粒呼吸、套印位移),位图做不到;④ 与方案 A 互补而非重复:B 负责「印刷工艺」,A 负责「纸张材质」 |
为什么这套组合成立: 构成主义的版面语法是「窄体重字 + 巨大尺度对比 + 网格 + 红黑对角」。Oswald 提供窄体重字,Golos Text 提供中性对照,JetBrains Mono 提供网格/工程语义;纹理层用「程序化套印错位」承担最构成主义的那部分(错位、叠印、网屏),用 CC0 纸材质托底,全部授权无义务。
若项目只在拉丁语环境(无需西里尔)
| 角色 | 字体 | 理由 |
|---|---|---|
| 标题 | Format 1452(Velvetyne,OFL 1.1) | 「Din-like, built with modules, without any optical corrections」——模块化 + 零光学修正就是构成主义字体观本身。比 Anton 更有观念性 |
| 备选标题 | Anton 或 Archivo Black | 更粗暴直接的 Druk 替代 |
| 正文 | Instrument Sans(OFL 1.1,双轴 wdth 75–100 + wght 400–700) |
可以在正文层直接收窄,与标题的窄体呼应而不重复 |
| 等宽 | Sligoil(Velvetyne,OFL 1.1) | 「monospace with large inktraps」——inktrap 是印刷工艺的自我暴露,与半调网点同一套语义 |
| 纹理 | 同上方案 A + B | — |
⚠️ 三条必须遵守的使用纪律
- 不要碰 Fontshare 的 Closed Source 字体(Clash Display / Cabinet Grotesk / Satoshi…):虽然商用免费,但 ITF FFL v2.0 明文禁止 subset、格式转换、放进仓库分发,而它们 100% 没有西里尔。
- 不要用 Commons 上现代摄影师翻拍的苏联海报(
Artist字段是 2021/2022 年的摄影师、授权为 CC BY / CC BY-SA 的)——翻拍照片本身有独立版权。只取Artist是画家本人、Date是 1920s 的文件。 - Rodchenko / Stepanova 只选 1930 年及以前出版的作品,Klutsis 在 2027 年前回避。 零风险的选择是 Popova + Malevich + Lissitzky。
附录 A:Cyrillic cmap 实测原始数据
方法:从 fonts.gstatic.com(不指定 UA 时 Google 返回完整单文件 TTF)与 GitLab raw(OTF)下载二进制,Python 手写解析 cmap 表 format 4 / 6 / 12,统计 U+0410–U+044F ∪ {U+0401, U+0451} 共 64 个西里尔基本字母的命中数,以及 31 个乌克兰语扩展字母(Ґ ґ Є є І і Ї ї 等)。
GF__Anybody.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=658
GF__Archivo.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=653
GF__Archivo_Black.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=423
GF__Barlow_Condensed.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=525
GF__Bebas_Neue.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=461
GF__Big_Shoulders_Display.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=718
GF__Chivo.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=644
GF__Instrument_Sans.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=343
GF__Saira_Condensed.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=608
GF__Space_Grotesk.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=735
GF__Space_Mono.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=624
GF__Syne.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=470
GF__Teko.ttf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=424
GF__Geist_Mono.ttf CYRILLIC-YES UA=31/31 cyr_ext=38 total_cp=889
GF__Golos_Text.ttf CYRILLIC-YES UA=31/31 cyr_ext=80 total_cp=566
GF__JetBrains_Mono.ttf CYRILLIC-YES UA=31/31 cyr_ext=6 total_cp=976
GF__Jost.ttf CYRILLIC-YES UA=26/31 cyr_ext=0 total_cp=524 <-- 俄文完整,乌克兰文不全
GF__Manrope.ttf CYRILLIC-YES UA=31/31 cyr_ext=8 total_cp=678
GF__Onest.ttf CYRILLIC-YES UA=31/31 cyr_ext=70 total_cp=780
GF__Oswald.ttf CYRILLIC-YES UA=31/31 cyr_ext=140 total_cp=850
GF__Roboto_Mono.ttf CYRILLIC-YES UA=31/31 cyr_ext=179 total_cp=876
GF__Rubik_Mono_One.ttf CYRILLIC-YES UA=31/31 cyr_ext=2 total_cp=528
GF__Russo_One.ttf CYRILLIC-YES UA=31/31 cyr_ext=2 total_cp=410
GF__Stalinist_One.ttf CYRILLIC-YES UA=31/31 cyr_ext=2 total_cp=333
GF__Tektur.ttf CYRILLIC-YES UA=31/31 cyr_ext=86 total_cp=962
GF__Unbounded.ttf CYRILLIC-YES UA=31/31 cyr_ext=2 total_cp=1138
StudioTriple__pilowlava_Pilowlava-Atome.otf CYRILLIC-YES UA=31/31 cyr_ext=2 total_cp=360
velvetyne__grotesk_Grotesk-01Extrafin.otf CYRILLIC-YES UA=31/31 cyr_ext=2 total_cp=474
velvetyne__lack_Lack-Italic.otf CYRILLIC-YES UA=31/31 cyr_ext=124 total_cp=667
velvetyne__murmure_le-murmure.otf CYRILLIC-YES UA=31/31 cyr_ext=2 total_cp=504
velvetyne__Avara_Avara-Black.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=234
velvetyne__Gulax_Gulax-Regular.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=315
velvetyne__Mess_Mess.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=189
velvetyne__Sporting-Grotesque_...Bold.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=336
velvetyne__basteleur_Basteleur-Bold.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=454
velvetyne__compagnon_Compagnon-Bold.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=304
velvetyne__format-1452_Format_1452.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=177
velvetyne__lineal_Lineal-Black.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=353
velvetyne__sligoil_Sligoil-Micro.otf NO-CYRILLIC UA=0/31 cyr_ext=0 total_cp=784
未取得二进制(受 fonts.googleapis.com 限流),仅以官方 METADATA.pb 的 subsets 判定:
Anton(无) · Alumni Sans(有 cyrillic+cyrillic-ext) · Inter(有) · Bricolage Grotesque(无) · League Gothic(无) · Montserrat(有) · Roboto Condensed(有) · IBM Plex Mono(有) · PT Mono(有) · Prosto One(无) · Rubik(有) · Cuprum(有) · Yanone Kaffeesatz(有) · Advent Pro(有)
附录 B:Velvetyne GitLab 群组完整 34 项(/api/v4/groups/velvetyne/projects 实测)
flor-des-ruina · feroniapi · interlope · letters · lineal · Facade-font · velvetyne-libre-friends · grotesk · jgs · fungal · sligoil · amdal · Gulax · Trickster · Sporting-Grotesque · basteleur · anthony · pilowlava3D · Mess · mourier · imago-mundi-mei · cantique · lack · backout · kaerukaeru · format-1452 · Velvetyne-Standard-Character-Set · Velvetyne-Notdef · Avara · vg5000 · ouroboros · murmure · compagnon · Happy-Times-at-the-IKOB
各项目 URL 形如 https://gitlab.com/velvetyne/<slug>;授权文件位于仓库根目录的 LICENSE.txt(少数为 LICENSE.md 或无独立文件)。
附录 C:可复现的验证命令
# 1) Google Fonts 官方 METADATA(许可证 / subsets / 变量轴)
curl.exe -sS --ssl-no-revoke "https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/oswald/METADATA.pb"
# 2) 官方 CSS API 实测子集(需带 Chrome UA 才会输出 /* cyrillic */ 注释)
curl.exe -sS --ssl-no-revoke -A "Mozilla/5.0 ... Chrome/124" `
"https://fonts.googleapis.com/css2?family=Oswald&display=swap"
# 3) Fontsource 全量目录(2103 条,含 subsets/license/variable)
curl.exe -sS --ssl-no-revoke "https://api.fontsource.org/v1/fonts"
# 4) Fontshare 全量目录(100 条,含 license_type/axes/languages)
curl.exe -sS --ssl-no-revoke "https://api.fontshare.com/v2/fonts"
# 5) Velvetyne 官方群组项目清单
curl.exe -sS --ssl-no-revoke `
"https://gitlab.com/api/v4/groups/velvetyne/projects?per_page=100&include_subgroups=true"
# 6) Commons 俄罗斯 PD 规则原文
curl.exe -sS --ssl-no-revoke `
"https://commons.wikimedia.org/w/index.php?title=Template:PD-Russia-1996/en&action=raw"
# 7) Commons 单文件授权 + 分辨率
curl.exe -sS --ssl-no-revoke `
"https://commons.wikimedia.org/w/api.php?action=query&prop=imageinfo&iiprop=url%7Csize%7Cextmetadata&format=json&titles=File:Beat%20the%20Whites%20with%20the%20Red%20Wedge.jpg"