文档 / YSU 内核

支持范围

逐条列出内核现在的落地情况。

判断标准:代码里确实有这条路径,而且能被测试或截图验证,算「支持」。解析进来了但没人读、字段有但布局不认、命令定义了但没人生产——一律算「未实现」。

这个口径偏严,但它避免了「看着像能用其实不生效」——那种情况排查起来最费时间。

图例:✅ 支持 · ⚠️ 部分支持(括号里说明)· ❌ 未实现

HTML

特性状态
词法(标签、属性、注释、DOCTYPE、字符引用)
树构建(插入模式、格式化元素、收养机构、表格寄养)
怪异模式判定✅ 判定出来并记录,缓解规则未实现
外来内容(SVG / MathML)的标签名与属性调整
字符引用✅ 2231 条具名引用,含 Windows-1252 的 C1 映射
片段解析(innerHTML 那类)⚠️ 有入口,未纳入 html5lib 的 192 条片段用例比对
<script> 解析✅ 解析进 DOM
<script> 执行❌ 没有执行器
<img>❌ 不产生替换内容,不占位,不显示
<map> / <area>
表单控件的外观❌ 只有 display: inline-block,没有控件盒
<base href>❌ 基准地址从 API 传入,不从 DOM 读
<meta charset> 的语义⚠️ 编码嗅探靠在前 1000 字节里搜子串,不读 DOM
<form> 的嵌套禁止⚠️ 会真的建出嵌套 form
<isindex> / <nextid>❌ 落兜底分支
xmp / listing / plaintext 的呈现⚠️ xmpplaintext 有字面解析,无等宽样式规则

CSS 解析

特性状态
词法(记号类型、数字、字符串、url)
转义解码(\41 b 这类)❌ 反斜杠只跳过,不解码
未闭合字符串 / URL 的错误恢复❌ 照样返回可用的值
CDO / CDC 的忽略❌ 记号类型有,解析路径没接
规则、声明、错误恢复
@media⚠️ all / screen 支持,only screen 恒不匹配,print / speech 当作不匹配
@import
@supports
@namespace
@font-face⚠️ 解析进字体表,无消费方(字体不下载、不注册)
@keyframes / @page / @charset
媒体查询的 MQ4 范围语法

选择器

特性状态
四种组合器
七个属性运算符
结构伪类(含四个 -of-typenth-*
:not() / :is()
:lang()✅ 沿祖先查找
:where()⚠️ 能与 :is() 一样匹配,但优先级不是零
:hover / :active / :focus / :visited❌ 匹配逻辑有,外壳不提供状态
:has()❌ 未知伪类会让整条规则作废
伪元素(::before / ::after❌ 解析得出来,匹配时不区分,不生成盒子
:link:visited 互斥⚠️ 已访问链接会同时命中两者

样式计算

特性状态
来源顺序与 !important
继承✅ 九项
优先级计算
内置默认样式表
em / 百分比字号的换算
calc() / min() / max() / clamp()
var() 与自定义属性
inherit / initial / unset❌ 命中后直接丢掉
box-sizing❌ 只有 content-box 语义
currentColor
角度单位(rad / grad / turn❌ 只认 deg
border-radius⚠️ 四个角、百分比按短边;只有单值,10px 20px 被丢弃

布局

特性状态
块级布局✅ 含相邻与父子外边距合并
水平 auto 外边距居中
纵向 auto 外边距
行内布局与行盒
行内块收缩到适配
文本断行(cosmic-text)
text-align⚠️ left / right / center;justify 是空操作
弹性布局⚠️ 单行;flex-wrap 不生效,align-content 不生效,order
表格布局⚠️ 列宽按内容求解;无跨行跨列,无边框合并,无 table-layout: fixedcaption 不可见
float / clear❌ 连字段都没有
position❌ 字段解析进计算样式,布局与绘制零读取
z-index❌ 同上
visibility❌ 字段有,painter 不读
vertical-align❌ 无字段,行盒基线写死为行高的 0.8 倍
text-indent
椭圆角(border-radius: 水平 垂直
Grid❌ 全仓零命中
多列布局
容器查询
display: flow-root / contents / inline-table❌(inline-table 被降级成 table

文本与字体

特性状态
字形整形与断行✅ cosmic-text,Shaping::Advanced
white-space 五种取值
下划线
line-height⚠️ 只吃无单位倍数与 normal,带单位的被静默忽略
letter-spacing / word-spacing
text-transform
text-overflow(省略号)
word-break / overflow-wrap / hyphens
text-decoration 除下划线以外的取值
@font-face 的实际加载
font-variant / font-stretch
彩色字形(emoji)❌ 图集是单通道,彩色字形被跳过
行盒基线的精确计算❌ 用 0.8 的行高估算

绘制与渲染

特性状态
背景色、边框、文字
圆角矩形✅ 用有符号距离场
四种边框线型✅ Solid / Dashed / Dotted / Double
裁剪(overflow✅ 轴对齐矩形
滚动时按可见区域重绘
图片绘制DrawCommand::Image 无生产者
background-image❌ 简写只挑颜色,其余丢弃
box-shadow
transform
filter / filter-filter
mix-blend-mode
outline
clip-path / mask
opacity⚠️ 按子树累乘,不是独立合成层
列表标记⚠️ 一律画圆点,list-style-type
::before / ::aftercontent
计数器
@keyframes / transition❌ 布局只算一次,没有重算入口
分页(@page

网络

特性状态
HTTP/1.1✅ 手写解析
HTTPS✅ rustls + webpki-roots
重定向✅ 301/302/303/307/308,上限 10 次
超时与大小上限
分块传输
字符集嗅探✅ BOM / Content-Type / <meta charset>
外部样式表✅ 逐个取回并应用
压缩传输❌ 不发 Accept-Encoding,不解 Content-Encoding
连接池❌ 每次新建连接
Cookie
缓存
子资源(图片、脚本、字体)❌ 只取样式表
POST 与表单提交⚠️ Request 支持序列化 POST,客户端不发

地址与页面

特性状态
地址栏输入的解析(六种路径前缀)
~ 展开家目录
相对链接补全
五个内置页面
file:// 双向转换
本地文件加载与字符集嗅探
搜索词❌ 没有这一档
本地目录列表
权限与沙箱策略

脚本

特性状态
<script> 在 DOM 里
执行❌ 整个运行期除了数字抽象操作之外为零
事件派发
定时器与微任务

外壳

特性状态
标签页(新建、关闭、切换、拖动重排)
导航历史(前进、后退、刷新,中间跳转后截断)
地址栏
缩放✅ 改布局视口宽度,不是拉伸画面
滚动(滚轮、翻页键、首尾)
链接点击与手型光标
打开本地文件(对话框、拖放、地址栏路径)
命令行参数❌ 外壳不解析 argv
书签
下载管理
设置界面
开发者工具
会话恢复
多进程隔离
打印
输入法✅ 走 Qt 的输入法插件,不改代码即可

两件要说清楚的事

表里标 ❌ 的每一条,都是「整条路径不存在」,不是「有 bug」。 它们不会报错,不会崩,只会安静地不生效。

标 ⚠️ 的那些请当成 ❌ 用。 一个只在特定写法下才生效的特性,依赖它等于在赌。要么绕开,要么先把缺的那一段补上。