mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-09 03:46:16 -08:00
46 lines
24 KiB
JavaScript
46 lines
24 KiB
JavaScript
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 "ASS 字幕:JASSUB""></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 "安装和示例""></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;"> 'artplayer'</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;"> 'artplayer-plugin-jassub'</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&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 'artplayer-plugin-jassub';</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;">'.artplayer-app'</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;">'/assets/jassub/FGOBD.mp4'</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;">'/assets/jassub/FGOBD.ass'</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;">'/assets/jassub/jassub-worker.js'</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;">'/assets/jassub/jassub-worker.wasm'</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;">'/assets/jassub/jassub-worker-modern.wasm'</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;"> 'liberation sans'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/assets/jassub/default.woff2'</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;"> '/assets/jassub/fonts/Averia Sans Libre Light.ttf'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '/assets/jassub/fonts/Averia Serif Simple Light.ttf'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '/assets/jassub/fonts/Gramond.ttf'</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 "资源和渲染选项""></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>'jassub-worker.js'</code></td></tr><tr><td><code>wasmUrl</code></td><td><code>'jassub-worker.wasm'</code></td></tr><tr><td><code>legacyWasmUrl</code></td><td><code>'jassub-worker.wasm.js'</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>{ 'liberation sans': './default.woff2' }</code>,字体名到 URL/字节映射</td></tr><tr><td><code>fallbackFont</code></td><td><code>'liberation sans'</code></td></tr><tr><td><code>useLocalFonts</code></td><td>只有存在 queryLocalFonts 时启用;未指定时当前实现为 true,可显式 false;仍受权限限制</td></tr><tr><td><code>blendMode</code></td><td><code>'js'</code>,也可选 <code>'wasm'</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 "实例和方法""></a></h2><p>注册同步返回 <code>{ name: 'artplayerPluginJassub', 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 "生命周期和类型""></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;"> 'artplayer'</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;"> 'artplayer-plugin-jassub/runtime'</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;">'/assets/jassub/jassub-worker.js'</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;">'/assets/jassub/jassub-worker.wasm'</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;">'/subtitles.ass'</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;">'ready'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></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;">=></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};
|