Files
ArtPlayer/docs/document/assets/plugin_jassub.md.plPiOu52.js
T

46 lines
24 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{_ as i,o as e,c as n,ak as a,j as t}from"./chunks/framework.xxfEszSJ.js";const E=JSON.parse('{"title":"ASS 字幕:JASSUB","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/jassub.md","filePath":"plugin/jassub.md","lastUpdated":1789501055000}'),l={name:"plugin/jassub.md"};function r(p,s,d,h,k,o){return e(),n("div",null,s[0]||(s[0]=[a(`<h1 id="ass-字幕-jassub" tabindex="-1">ASS 字幕:JASSUB <a class="header-anchor" href="#ass-字幕-jassub" aria-label="Permalink to &quot;ASS 字幕:JASSUB&quot;">​</a></h1><p><a href="./../en/plugin/jassub.html">English</a></p><p>使用 JASSUB Worker/WASM 在 Canvas 上渲染 ASS 字幕。插件返回真实 JASSUB 实例,保留其方法与事件,不将字幕转换成普通 VTT。本页描述当前未发布分支;Worker、WASM、字体和实际视频效果仍需按部署环境验证。</p><h2 id="安装和示例" tabindex="-1">安装和示例 <a class="header-anchor" href="#安装和示例" aria-label="Permalink to &quot;安装和示例&quot;">​</a></h2><div class="language-sh vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> artplayer</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> artplayer-plugin-jassub</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Artplayer </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;artplayer&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> artplayerPluginJassub </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;artplayer-plugin-jassub&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>script 先加载 ArtPlayer,再加载 <code>dist/artplayer-plugin-jassub.js</code>,全局名为 <code>artplayerPluginJassub</code>。下面保留<a href="https://artplayer.org/?libs=./uncompiled/artplayer-plugin-jassub/index.js&amp;example=jassub" target="_blank" rel="noreferrer">原在线示例</a>;其中的 Worker/WASM 和字体地址属于站点资产,不会因为安装插件而自动出现在应用中。</p>`,7),t("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-jassub/index.js"},"▶ Run Code",-1),a(`<div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// https://github.com/ThaUnknown/jassub</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// npm i artplayer-plugin-jassub</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// import artplayerPluginJassub from &#39;artplayer-plugin-jassub&#39;;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> art </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Artplayer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> container: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;.artplayer-app&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/assets/jassub/FGOBD.mp4&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> autoSize: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> fullscreen: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> fullscreenWeb: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> plugins: [</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> artplayerPluginJassub</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> subUrl: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/assets/jassub/FGOBD.ass&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> workerUrl: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/assets/jassub/jassub-worker.js&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> wasmUrl: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/assets/jassub/jassub-worker.wasm&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> modernWasmUrl: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/assets/jassub/jassub-worker-modern.wasm&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> availableFonts: {</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;liberation sans&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/assets/jassub/default.woff2&#39;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> fonts: [</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;/assets/jassub/fonts/Averia Sans Libre Light.ttf&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;/assets/jassub/fonts/Averia Serif Simple Light.ttf&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;/assets/jassub/fonts/Gramond.ttf&#39;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> timeOffset: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0.041</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }),</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br></div></div><p>自行托管相互匹配的 Worker、WASM 和字体,确认路径、访问策略及字体使用许可。缺失字体会影响排版;相对默认路径存在不等于文件已部署。</p><h2 id="资源和渲染选项" tabindex="-1">资源和渲染选项 <a class="header-anchor" href="#资源和渲染选项" aria-label="Permalink to &quot;资源和渲染选项&quot;">​</a></h2><p>实际配置可省略,默认绑定 art.video;配置在注册时读取,显式 video 可覆盖它。以下按当前本地实现描述,不照搬上游注释中的旧默认值。</p><table tabindex="0"><thead><tr><th>字段</th><th>实际默认或含义</th></tr></thead><tbody><tr><td><code>video</code> / <code>canvas</code></td><td>默认 video 为 art.video;提供自己的 canvas 可手动管理节点,至少需要可用的渲染目标</td></tr><tr><td><code>workerUrl</code></td><td><code>&#39;jassub-worker.js&#39;</code></td></tr><tr><td><code>wasmUrl</code></td><td><code>&#39;jassub-worker.wasm&#39;</code></td></tr><tr><td><code>legacyWasmUrl</code></td><td><code>&#39;jassub-worker.wasm.js&#39;</code></td></tr><tr><td><code>modernWasmUrl</code></td><td>检测到 SIMD 且提供此地址时优先使用,否则使用 wasmUrl</td></tr><tr><td><code>subUrl</code> / <code>subContent</code></td><td>字幕地址或 ASS 文本,传给 Worker</td></tr><tr><td><code>fonts</code></td><td>默认空数组,元素可为 URL 或 Uint8Array</td></tr><tr><td><code>availableFonts</code></td><td>默认 <code>{ &#39;liberation sans&#39;: &#39;./default.woff2&#39; }</code>,字体名到 URL/字节映射</td></tr><tr><td><code>fallbackFont</code></td><td><code>&#39;liberation sans&#39;</code></td></tr><tr><td><code>useLocalFonts</code></td><td>只有存在 queryLocalFonts 时启用;未指定时当前实现为 true,可显式 false;仍受权限限制</td></tr><tr><td><code>blendMode</code></td><td><code>&#39;js&#39;</code>,也可选 <code>&#39;wasm&#39;</code></td></tr><tr><td><code>asyncRender</code></td><td>默认 true,但需 createImageBitmap 能力</td></tr><tr><td><code>offscreenRender</code></td><td>默认 true,但需 transferControlToOffscreen 且没有传入自有 canvas</td></tr><tr><td><code>onDemandRender</code></td><td>默认 true,但需 requestVideoFrameCallback 能力</td></tr><tr><td><code>targetFps</code></td><td>默认 24,按需渲染时不作为固定更新承诺</td></tr><tr><td><code>timeOffset</code></td><td>默认 0,单位秒</td></tr><tr><td><code>debug</code></td><td>默认 false</td></tr><tr><td><code>prescaleFactor</code> / <code>prescaleHeightLimit</code> / <code>maxRenderHeight</code></td><td>默认 1 / 1080 / 0,控制渲染尺寸;0 的最大高度表示不设置此上限</td></tr><tr><td><code>dropAllAnimations</code> / <code>dropAllBlur</code></td><td>转发给 Worker 的简化渲染选项,未指定时不在包装层设置为 true</td></tr><tr><td><code>libassMemoryLimit</code> / <code>libassGlyphLimit</code></td><td>默认 0,libass 缓存限制参数,单位 MiB;不是浏览器总内存上限</td></tr></tbody></table><p>若平台缺少能力,渲染路径会与配置意图不同。不要把异步、离屏或后端选项视为所有设备的速度保证,也不要在不同版本 Worker 与包装层之间混用资源。</p><h2 id="实例和方法" tabindex="-1">实例和方法 <a class="header-anchor" href="#实例和方法" aria-label="Permalink to &quot;实例和方法&quot;">​</a></h2><p>注册同步返回 <code>{ name: &#39;artplayerPluginJassub&#39;, instance }</code>,不是 Worker ready Promise。通过 <code>art.plugins.artplayerPluginJassub.instance</code> 取得实例。实例是 EventTarget,监听 ready 后再进行查询;error 事件属于该实例,不是播放器的同名事件。</p><table tabindex="0"><thead><tr><th>方法</th><th>行为与单位</th></tr></thead><tbody><tr><td><code>resize(width?, height?, top?, left?, force?)</code></td><td>同步返回 void;实际 force 在最后,省略尺寸时依据视频计算</td></tr><tr><td><code>setVideo(video)</code></td><td>同步切换绑定视频、观察器和自有容器位置</td></tr><tr><td><code>setTrackByUrl(url)</code> / <code>setTrack(content)</code> / <code>freeTrack()</code></td><td>切换地址、ASS 文本或释放字幕轨道</td></tr><tr><td><code>setIsPaused(boolean)</code> / <code>setRate(number)</code></td><td>手动更新 Worker 的播放状态/倍率</td></tr><tr><td><code>setCurrentTime(isPaused?, currentTime?, rate?)</code></td><td>currentTime 使用秒</td></tr><tr><td><code>createEvent(event)</code> / <code>setEvent(event, index)</code> / <code>removeEvent(index)</code></td><td>增删改 ASS event,修改对象为部分字段</td></tr><tr><td><code>getEvents(callback)</code></td><td>回调返回 event 数组,非 Promise</td></tr><tr><td><code>createStyle(style)</code> / <code>setStyle(style, index)</code> / <code>removeStyle(index)</code></td><td>增删改样式,修改对象为部分字段</td></tr><tr><td><code>getStyles(callback)</code></td><td>回调返回样式数组,非 Promise</td></tr><tr><td><code>styleOverride(style)</code> / <code>disableStyleOverride()</code></td><td>设置/取消样式覆盖</td></tr><tr><td><code>setDefaultFont(font)</code> / <code>addFont(font)</code></td><td>设置默认字体或添加 URL/字节字体</td></tr><tr><td><code>runBenchmark()</code></td><td>请求 Worker 基准操作,不代表端到端性能结论</td></tr><tr><td><code>sendMessage(target, data?, transferable?)</code></td><td>Promise 仅表示已发送,或销毁后无需发送,不等待 Worker 确认</td></tr><tr><td><code>destroy()</code></td><td>同步清理并可重复调用,没有资源回收完成 Promise</td></tr></tbody></table><p>除 sendMessage 外,上表普通控制方法返回 void;查询通过回调提供数据。<code>destroy(error)</code> 保留历史返回行为:原 Error 原样返回,非空字符串转为 Error,空字符串原样返回。正常调用使用无参 destroy。</p><p>AssEvent 的 Start/Duration 为毫秒,Style 是数字样式索引;其余字段为 Name、MarginL/MarginR/MarginV、Effect、Text、ReadOrder、Layer。AssStyle 包含 Name/FontName/FontSize、PrimaryColour/SecondaryColour/OutlineColour/BackColour、Bold/Italic/Underline/StrikeOut、ScaleX/ScaleY/Spacing/Angle、BorderStyle/Outline/Shadow/Alignment、MarginL/MarginR/MarginV、Encoding、treat_fontname_as_pattern、Blur、Justify。查询结果没有 <code>_index</code>,不要混淆 ASS 文本格式的样式名称与运行时 Style 数字。</p><p>查询回调成功为 <code>(null, array)</code>;失败为 Error 或原生 Event 且没有数据。销毁会在清理监听器/定时器后使待处理查询失败。协议按响应 target 匹配,没有新的请求 ID;避免把同时发出的同类查询当作独立关联响应。</p><h2 id="生命周期和类型" tabindex="-1">生命周期和类型 <a class="header-anchor" href="#生命周期和类型" aria-label="Permalink to &quot;生命周期和类型&quot;">​</a></h2><p>插件创建的 <code>.JASSUB</code> 容器设为 z-index 20,销毁时移除;调用方传入的 canvas/video 保留。播放器销毁调用实例当前的 destroy,直接销毁也保持幂等。setVideo 和销毁会使旧帧回调失效,Worker 和自有观察器会清理;晚到的异步位图不应重新启动渲染。真实离屏停顿、浏览器差异和物理设备仍有独立验收要求。</p><p>根和 <code>/legacy</code> 保留旧 JassubOption/JassubInstance 类型:三个资源 URL 必填、force-first resize,以及错误的 Promise 方法返回和任意扩展索引。准确类型使用同一实现的 <code>/runtime</code>:</p><div class="language-ts vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Artplayer </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;artplayer&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jassub </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;artplayer-plugin-jassub/runtime&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> attachSubtitles</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">art</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Artplayer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">instance</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> jassub</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> workerUrl: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/assets/jassub/jassub-worker.js&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> wasmUrl: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/assets/jassub/jassub-worker.wasm&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> subUrl: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;/subtitles.ass&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })(art);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> instance.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">addEventListener</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;ready&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> instance.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getEvents</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">((</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">events</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (error) console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(error);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(events);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> });</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> instance;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div><p>runtime 导出 FontSource、RuntimeOption、AssEvent、AssStyle、AssEventInput、AssStyleInput、WorkerRequestError、EventsCallback、StylesCallback、RuntimeEventMap、RuntimeInstance、RuntimeResult、RuntimeFactory。精确实例字段包括 timeOffset、debug、三项尺寸设置、可选 busy,以及历史公开 <code>_canvas/_ctx</code>;<code>_ctx</code> 可能为 false/null。没有运行时工厂 <code>.default</code> 自引用;NodeNext 根类型的命名空间不能当作这种别名。runtime 支持准确 ESM 默认导入和 CommonJS <code>import = require</code>。</p>`,17)]))}const u=i(l,[["render",r]]);export{E as __pageData,u as default};