Obsidian

MuPDF Fitz JNI 在 Jetpack Compose 虚拟列表中的线程安全与渲染架构 (Thread Safety and Rendering Architecture of MuPDF Fitz JNI in Jetpack Compose)

1. 适用场景与背景在 Android 原生应用中,使用高性能 C/C++ 渲染核心(如 MuPDF Fitz 引擎,com.artifex.mupdf.fitz 与 AndroidDrawDevice)进行大型 PDF 文档解析与按页栅格化渲染(Rasterization),并结合声明式 UI 框架 Jetpack Compose 的虚拟列表 LazyColumn 进行多页瀑布流呈现时,常遇到底

Obsidian

Nginx 静态资源缺失 mjs 映射导致 ESM 严格 MIME 校验拦截 (Nginx Missing mjs MIME Type Breaking ESM Module Scripts)

1. 现象与触发场景 (Symptom & Scenario)使用现代前端构建工具(如 Vite、Rollup、Webpack 5)打包时,针对 Web Worker、ES Module 动态导入或第三方库(如 pdfjs-dist 的 pdf.worker.mjs)通常会产出扩展名为 .mjs 的静态资源。触发条件前端应用通过动态 import() 或 <script type="

Obsidian

交叉观察器在已有相交元素内容失效时不触发回调 (IntersectionObserver Fails to Fire on In-Viewport Content Invalidation)

1. 现象与触发场景 (Symptom & Scenario)在连续滚动渲染(如长文档、虚拟列表、PDF 阅览器、图文流)中,通常使用 IntersectionObserver 监听每一页(或卡片)占位槽(Slot)的进入视口事件,按需渲染内部的 Heavy DOM(如 <canvas>、图片、复杂图表)。触发条件页面已在视口中完整或部分可见,内部内容已被渲染。触发外部布局变动(例如:

Obsidian

批注模式触控笔书写触发页面滚动导致笔画拉丝偏移 (Stylus Annotation Triggers Viewport Pan Causing Stroke Drift)

触发条件 (Occurrence Conditions)宿主环境:iPad (Safari / Chrome) 或带触控笔与触摸屏的 Windows / Android 平板设备。场景结构:在一个可滚动的文档容器(如 PDF 阅读器、长图、可缩放工作区)的上方,叠加了一层与视口/页面对齐的透明 HTML5 Canvas 作为数字墨迹批注层(Ink Layer)。交互动作:用户开启批注模式,使用 A