Penpot 迁移 WebGL 渲染遇“三线问题”,多格式多描边处理揭秘!
描边基础与跨格式呈现在 Penpot 迁移到 WebGL 渲染 时遇到了“三线问题”。当三种描边相互交织设计系统易混乱。2026 年 7 月 21 日发布的文章提到物理学三体问题表述与“三线问题”有类比性。描边即围绕图层的线可更新属性定制样式、大小和颜色[1]。在 CSS 中对应 border 属性有相关使用方式和独立属性[3]文章给出代码示例。在 SVG 中Penpot 正用 WebGL 渲染器取代原始渲染器也有样式对应写法示例[2]。三线问题详解描边根据位置分内描边、居中描边和外描边[7]。内描边完全在形状内宽度从边缘向内延伸居中描边一半在形状内一半在外外描边完全在形状外宽度从边缘向外延伸。不同格式处理方式有分歧CSS 默认内边框实现外边框或居中边框需用 outline 和 outline-offset 属性SVG 中居中描边默认实现内、外描边需裁剪和遮罩文章给出 SVG 代码示例。WebGL 渲染器中的实现Penpot 使用 Skia 库实现描边Skia 提供 SkPaint 类[4]绘制类型有 Fill、Stroke 或 StrokeFillPenpot 使用不同 Paint 及其描边方法组合[5]。正方形形状的描边实现内描边将矩形向内缩进宽度一半使描边在形状内文章给出 C 代码及示例图居中描边是 Skia 原生行为直接在矩形上绘制给出代码及示例图外描边将矩形向外扩展宽度一半使描边在形状外也有对应代码及示例图。复杂形状路径的描边实现设计中引入复杂形状如路径时内、外描边需用 Skia 其他函数默认 Skia 描边居中无需特殊处理。文章以三角形路径为例给出内、中、外描边代码实现及示例图。虚线和点线样式处理处理虚线或点线描边需用 SkPathEffect文章给出代码实现及示例图。多条描边的挑战与应对形状描边数量增加使情况复杂。Penpot 支持多边框使用 SVG 或 WebGL 渲染器时按顺序添加边框文章给出代码及示例图。CSS 无法用 border 属性支持多描边常用 box-shadow 属性变通文章给出代码及示例图还提到可能很快能在 CSS 中声明式添加多边框https://bsky.app/profile/lea.verou.me/post/3mdjbojsf6s2h。总结与展望文章面对的系统如相互环绕的天体易混乱三种描边类型、三种格式对“默认”描边定义不同且变量增加。但得益于 WebGL 渲染实现边框相关视觉元素更灵活。Penpot 还有很大空间挖掘描边功能如描边转路径、每边单独设描边三线问题探索还在继续。

相关新闻

终极指南:如何用Mayavi快速实现Python 3D科学数据可视化

终极指南:如何用Mayavi快速实现Python 3D科学数据可视化

终极指南:如何用Mayavi快速实现Python 3D科学数据可视化 【免费下载链接】mayavi 3D visualization of scientific data in Python 项目地址: https://gitcode.com/gh_mirrors/ma/mayavi Mayavi是一个强大的Python 3D科学数据可视化库,专为科研人…

2026/10/4 18:19:17 阅读更多 →
基于Flink的CEP(复杂事件处理)引擎在金融风控场景的应用——Python大数据分析实战

基于Flink的CEP(复杂事件处理)引擎在金融风控场景的应用——Python大数据分析实战

在当今的金融体系中,风险控制已从传统的“事后监督”演变为“事中拦截”乃至“事前预警”。随着移动支付、在线信贷、量化交易等业务的爆发式增长,金融机构面临的欺诈模式、市场波动和操作风险呈现出高频、多变、隐蔽的特点。例如,信用卡盗刷可能发生在几秒钟内完成多笔小额…

2026/10/8 6:23:35 阅读更多 →
深入解析CRI工具:Kubernetes容器运行时管理的终极武器

深入解析CRI工具:Kubernetes容器运行时管理的终极武器

深入解析CRI工具:Kubernetes容器运行时管理的终极武器 【免费下载链接】cri-tools CLI and validation tools for Kubelet Container Runtime Interface (CRI) . 项目地址: https://gitcode.com/gh_mirrors/cr/cri-tools 你是否曾经在Kubernetes集群故障排查…

2026/10/7 8:45:27 阅读更多 →

最新新闻

旧电脑低成本升级指南:300元让老机焕发新生

旧电脑低成本升级指南:300元让老机焕发新生

1. 为什么需要低成本升级电脑? 十年前我帮朋友装的第一台电脑现在还在服役,只是速度慢得像老牛拉车。很多人遇到这种情况第一反应就是换新机,但其实80%的旧电脑通过针对性升级就能重获新生。最近帮公司行政部批量升级了20台办公电脑&#xff…

2026/10/14 12:26:34 阅读更多 →
ARPDemo拆包到跑通:增强现实工程的依赖管理与排错指南

ARPDemo拆包到跑通:增强现实工程的依赖管理与排错指南

简介:针对局域网设备发现场景,ARPDemo演示工程面向安卓开发人员,展示如何通过读取本地地址解析协议表获取当前局域网内其他设备的IP与MAC信息;工程核心流程包含获取本机无线网络IP地址、根据IP发送地址解析协议请求、再读取本地地…

2026/10/14 12:26:34 阅读更多 →
操作系统引导与程序装载全解析:从BIOS到内核的地址链与启动故障排查

操作系统引导与程序装载全解析:从BIOS到内核的地址链与启动故障排查

1. 从第三次作业说起:系统引导与程序装载到底在拼什么如果你正在被操作系统课程的第三次作业折磨,说明你已经碰到了这门课第一个真正硬核的分水岭。先亮明观点:系统引导与程序装载,表面上只是让一台裸机把磁盘里的内核镜像读进内存…

2026/10/14 12:26:34 阅读更多 →
树形DP进阶:从「将功补过」看状态设计与背包式合并

树形DP进阶:从「将功补过」看状态设计与背包式合并

1. 从“将功补过”这个标题说起:一道树形DP题的建模思路第一次看到“将功补过”这四个字,很多人会以为是职场复盘或者人生感悟类的文章,但在算法竞赛的语境里,它其实是一道非常典型的树形DP题目。标题里的“将功补过”四个字&…

2026/10/14 12:26:34 阅读更多 →
2026通关榜!好用的降AI率软件全盘点,效率直接拉满!

2026通关榜!好用的降AI率软件全盘点,效率直接拉满!

2026 年 AI 论文写作工具的综合王者是 千笔AI,国内毕业全流程首选千笔AI;千笔以中文润色 降重双能与全流程闭环见长,深度适配高校规范与查重系统,AI 率控制行业领先。按需求选对工具,论文效率可提升70%-90%&#xff0…

2026/10/14 12:26:34 阅读更多 →
Shapefile属性查询完全指南:界面、SQL与Python实战

Shapefile属性查询完全指南:界面、SQL与Python实战

做GIS数据处理这行,跟Shapefile打交道是躲不掉的日常。尤其“查”这个操作,说起来不过是“选中我想要的那些要素”,可真要查得准、查得快、查完还能直接往下走流程,里面门道不少。这篇就把“Shapefile属性操作之查”从头到尾捋一遍…

2026/10/14 12:25:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →