PageSourceSearch

https://nonebot.dev/assets/js/cf82e5c5.c993fc9e.js

js nonebot.dev collected 2026-10-03 23:20:22 UTC 21,289 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunknonebot=self.webpackChunknonebot||[]).push([["4469"],{95166(e,n,i){i.r(n),i.d(n,{metadata:()=>c,default:()=>x,frontMatter:()=>t,contentTitle:()=>d,toc:()=>o,assets:()=>r});var c=JSON.parse('{"id":"best-practice/htmlkit-render","title":"\u8F7B\u91CF\u5316 HTML \u7ED8\u56FE","description":"\u8F7B\u91CF\u5316 HTML \u7ED8\u56FE","source":"@site/docs/best-practice/htmlkit-render.md","sourceDirName":"best-practice","slug":"/best-practice/htmlkit-render","permalink":"/docs/next/best-practice/htmlkit-render","draft":false,"unlisted":false,"editUrl":"https://github.com/nonebot/nonebot2/edit/master/website/docs/best-practice/htmlkit-render.md","tags":[],"version":"current","lastUpdatedBy":"pre-commit-ci[bot]","lastUpdatedAt":1789135437000,"sidebarPosition":8,"frontMatter":{"sidebar_position":8,"description":"\u8F7B\u91CF\u5316 HTML \u7ED8\u56FE"},"sidebar":"tutorial","previous":{"title":"\u4F9D\u8D56\u6CE8\u5165","permalink":"/docs/next/best-practice/database/developer/dependency"},"next":{"title":"\u53D1\u5E03\u63D2\u4EF6","permalink":"/docs/next/developer/plugin-publishing"}}'),s=i(62540),l=i(43023);let t={sidebar_position:8,description:"\u8F7B\u91CF\u5316 HTML \u7ED8\u56FE"},d="\u8F7B\u91CF\u5316 HTML \u7ED8\u56FE",r={},o=[{value:"\u5B89\u88C5\u63D2\u4EF6",id:"\u5B89\u88C5\u63D2\u4EF6",level:2},{value:"\u4F7F\u7528\u63D2\u4EF6",id:"\u4F7F\u7528\u63D2\u4EF6",level:2},{value:"\u52A0\u8F7D\u63D2\u4EF6",id:"\u52A0\u8F7D\u63D2\u4EF6",level:3},{value:"\u6E32\u67D3 API",id:"\u6E32\u67D3-api",level:3},{value:"html_to_pic",id:"html_to_pic",level:4},{value:"text_to_pic",id:"text_to_pic",level:4},{value:"md_to_pic",id:"md_to_pic",level:4},{value:"template_to_pic",id:"template_to_pic",level:4},{value:"\u63A7\u5236\u5916\u90E8\u8D44\u6E90\u83B7\u53D6",id:"\u63A7\u5236\u5916\u90E8\u8D44\u6E90\u83B7\u53D6",level:3},{value:"\u914D\u7F6E\u9879",id:"\u914D\u7F6E\u9879",level:2},{value:"\u914D\u7F6E fontconfig",id:"\u914D\u7F6E-fontconfig",level:3},{value:"fontconfig_file",id:"fontconfig_file",level:4},{value:"fontconfig_path",id:"fontconfig_path",level:4},{value:"fontconfig_sysroot",id:"fontconfig_sysroot",level:4},{value:"fc_debug",id:"fc_debug",level:4},{value:"fc_dbg_match_filter",id:"fc_dbg_match_filter",level:4},{value:"fc_lang",id:"fc_lang",level:4},{value:"fontconfig_use_mmap",id:"fontconfig_use_mmap",level:4}];function h(e){let n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"\u8F7B\u91CF\u5316-html-\u7ED8\u56FE",children:"\u8F7B\u91CF\u5316 HTML \u7ED8\u56FE"})}),"\n",(0,s.jsx)(n.p,{children:"\u56FE\u7247\u662F\u673A\u5668\u4EBA\u4EA4\u4E92\u4E2D\u4E0D\u53EF\u6216\u7F3A\u7684\u4E00\u90E8\u5206\uFF0C\u5BF9\u4E8E\u4FE1\u606F\u5C55\u793A\u7684\u76F4\u89C2\u6027\u3001\u7F8E\u89C2\u6027\u6709\u5F88\u5927\u7684\u4F5C\u7528\u3002\n\u57FA\u4E8E PIL \u76F4\u63A5\u7ED8\u5236\u56FE\u7247\u5177\u6709\u826F\u597D\u7684\u6027\u80FD\u548C\u5B58\u50A8\u5F00\u9500\uFF0C\u4F46\u662F\u96BE\u4EE5\u8C03\u8BD5\u3001\u7EF4\u62A4\u8FC7\u7A0B\u5F0F\u7684\u7ED8\u56FE\u4EE3\u7801\u3002\n\u4F7F\u7528\u6D4F\u89C8\u5668\u6E32\u67D3\u7C7B\u63D2\u4EF6\u53EF\u4EE5\u65B9\u4FBF\u5730\u7ED8\u5236\u7F51\u9875\uFF0C\u4E14\u80FD\u591F\u76F4\u63A5\u901A\u8FC7 JS \u5BF9\u7F51\u9875\u6548\u679C\u8FDB\u884C\u7F16\u7A0B\uFF0C\u4F46\u662F\u5B83\u5360\u7528\u7684\u5B58\u50A8\u548C\u5185\u5B58\u7A7A\u95F4\u76F8\u5BF9\u53EF\u89C2\u3002"}),"\n",(0,s.jsxs)(n.p,{children:["NoneBot \u63D0\u4F9B\u7684 ",(0,s.jsx)(n.code,{children:"nonebot-plugin-htmlkit"})," \u63D0\u4F9B\u4E86\u53E6\u4E00\u79CD\u57FA\u4E8E HTML \u548C CSS \u8BED\u6CD5\u7684\u8F7B\u91CF\u5316\u7ED8\u56FE\u9009\u62E9\uFF1A\u5B83\u57FA\u4E8E ",(0,s.jsx)(n.code,{children:"litehtml"})," \u89E3\u6790\u5E93\uFF0C\u65E0\u987B\u5B89\u88C5\u989D\u5916\u7684\u4F9D\u8D56\u5373\u53EF\u4F7F\u7528\uFF0C\u6CA1\u6709\u8FDB\u7A0B\u95F4\u901A\u4FE1\u5E26\u6765\u7684\u989D\u5916\u5F00\u9500\uFF0C\u4E14\u5728\u652F\u6301 ",(0,s.jsx)(n.code,{children:"webp"})," ",(0,s.jsx)(n.code,{children:"avif"})," \u7B49\u4E30\u5BCC\u56FE\u7247\u683C\u5F0F\u7684\u524D\u63D0\u4E0B\uFF0C\u5B89\u88C5\u7528\u7684 wheel \u6587\u4EF6\u5927\u5C0F\u4EC5\u6709\u7EA6 10 MB\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:["\u4F5C\u4E3A\u7C97\u7565\u7684\u6027\u80FD\u53C2\u8003\uFF0C\u5728\u4E00\u53F0 Ryzen 7 9700X \u7684 Windows \u7535\u8111\u4E0A\uFF0C\u6E32\u67D3 ",(0,s.jsx)(n.a,{href:"https://peps.python.org/pep-0007/",children:"PEP 7"})," \u7684 HTML \u9875\u9762\uFF08\u5206\u8FA8\u7387\u4E3A 800x5788\uFF0C\u5927\u5C0F\u7EA6 1.4MB\uFF0C\u4ECE\u672C\u5730\u6587\u4EF6\u7CFB\u7EDF\u8BFB\u53D6 CSS\uFF09\u5927\u7EA6\u9700\u8981 100ms\uFF0C\u6BCF\u4E2A\u6E32\u67D3\u4EFB\u52A1\u5185\u5B58\u6700\u9AD8\u5360\u7528\u7EA6\u4E3A 40MB."]}),"\n",(0,s.jsx)(n.h2,{id:"\u5B89\u88C5\u63D2\u4EF6",children:"\u5B89\u88C5\u63D2\u4EF6"}),"\n",(0,s.jsxs)(n.p,{children:["\u5728\u4F7F\u7528\u524D\u8BF7\u5148\u5B89\u88C5 ",(0,s.jsx)(n.code,{children:"nonebot-plugin-htmlkit"})," \u63D2\u4EF6\u81F3\u9879\u76EE\u73AF\u5883\u4E2D\uFF0C\u53EF\u53C2\u8003",(0,s.jsx)(n.a,{href:"/docs/next/tutorial/store#%E
15%AE%89%E8%A3%85%E6%8F%92%E4%BB%B6",children:"\u83B7\u53D6\u5546\u5E97\u63D2\u4EF6"}),"\u6765\u4E86\u89E3\u5E76\u9009\u62E9\u5B89\u88C5\u63D2\u4EF6\u7684\u65B9\u5F0F\u3002\u5982\uFF1A"]}),"\n",(0,s.jsxs)(n.p,{children:["\u5728",(0,s.jsx)(n.strong,{children:"\u9879\u76EE\u76EE\u5F55"}),"\u4E0B\u6267\u884C\u4EE5\u4E0B\u547D\u4EE4\uFF1A"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nb plugin install nonebot-plugin-htmlkit\n"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"nonebot-plugin-htmlkit"})," \u63D2\u4EF6\u76EE\u524D\u517C\u5BB9\u4EE5\u4E0B\u7CFB\u7EDF\u67B6\u6784\uFF1A"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Windows x64"}),"\n",(0,s.jsx)(n.li,{children:"macOS arm64\uFF08M-\u7CFB\u5217\u82AF\u7247\uFF09"}),"\n",(0,s.jsx)(n.li,{children:"Linux x64 \uFF08\u975E Alpine \u7B49 musl \u7CFB\u53D1\u884C\u7248\uFF09"}),"\n",(0,s.jsx)(n.li,{children:"Linux arm64 \uFF08\u975E Alpine \u7B49 musl \u7CFB\u53D1\u884C\u7248\uFF09"}),"\n"]}),"\n",(0,s.jsxs)(n.admonition,{title:"\u8BBF\u95EE\u7F51\u7EDC\u5185\u5BB9",type:"warning",children:[(0,s.jsxs)(n.p,{children:["\u5982\u679C\u9700\u8981\u8BBF\u95EE\u7F51\u7EDC\u8D44\u6E90\uFF08\u5982 http(s) \u7F51\u9875\u5185\u5BB9\uFF09\uFF0CNoneBot \u9700\u8981\u5BA2\u6237\u7AEF\u578B\u9A71\u52A8\u5668\uFF08Forward\uFF09\u3002\u5185\u7F6E\u7684\u9A71\u52A8\u5668\u6709 ",(0,s.jsx)(n.code,{children:"~httpx"})," \u4E0E ",(0,s.jsx)(n.code,{children:"~aiohttp"}),"\u3002"]}),(0,s.jsxs)(n.p,{children:["\u8BE6\u89C1",(0,s.jsx)(n.a,{href:"/docs/next/advanced/driver",children:"\u9009\u62E9\u9A71\u52A8\u5668"}),"\u3002"]})]}),"\n",(0,s.jsx)(n.h2,{id:"\u4F7F\u7528\u63D2\u4EF6",children:"\u4F7F\u7528\u63D2\u4EF6"}),"\n",(0,s.jsx)(n.h3,{id:"\u52A0\u8F7D\u63D2\u4EF6",children:"\u52A0\u8F7D\u63D2\u4EF6"}),"\n",(0,s.jsxs)(n.p,{children:["\u5728\u4F7F\u7528\u672C\u63D2\u4EF6\u524D\u540C\u6837\u9700\u8981\u4F7F\u7528 ",(0,s.jsx)(n.code,{children:"require"})," \u65B9\u6CD5\u8FDB\u884C",(0,s.jsx)(n.strong,{children:"\u52A0\u8F7D"}),"\u5E76",(0,s.jsx)(n.strong,{children:"\u5BFC\u5165"}),"\u9700\u8981\u4F7F\u7528\u7684\u65B9\u6CD5\uFF0C\u53EF\u53C2\u8003 ",(0,s.jsx)(n.a,{href:"/docs/next/advanced/requiring",children:"\u8DE8\u63D2\u4EF6\u8BBF\u95EE"})," \u4E00\u8282\u8FDB\u884C\u4E86\u89E3\uFF0C\u5982\uFF1A"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'from nonebot import require\n\nrequire("nonebot_plugin_htmlkit")\n\nfrom nonebot_plugin_htmlkit import html_to_pic, md_to_pic, template_to_pic, text_to_pic\n'})}),"\n",(0,s.jsxs)(n.p,{children:["\u63D2\u4EF6\u4F1A\u81EA\u52A8\u4F7F\u7528",(0,s.jsx)(n.a,{href:"#%E9%85%8D%E7%BD%AE-fontconfig",children:"\u914D\u7F6E\u4E2D\u7684\u53C2\u6570"}),"\u521D\u59CB\u5316 ",(0,s.jsx)(n.code,{children:"fontconfig"})," \u4EE5\u63D0\u4F9B\u5B57\u4F53\u67E5\u627E\u529F\u80FD\u3002"]}),"\n",(0,s.jsx)(n.h3,{id:"\u6E32\u67D3-api",children:"\u6E32\u67D3 API"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"nonebot-plugin-htmlkit"})," \u4E3B\u8981\u63D0\u4F9B\u4EE5\u4E0B",(0,s.jsx)(n.strong,{children:"\u5F02\u6B65"}),"\u6E32\u67D3\u51FD\u6570\uFF1A"]}),"\n",(0,s.jsx)(n.h4,{id:"html_to_pic",children:"html_to_pic"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'async def html_to_pic(\n    html: str,\n    *,\n    base_url: str = "",\n    dpi: float = 144.0,\n    max_width: float = 800.0,\n    device_height: float = 600.0,\n    default_font_size: float = 12.0,\n    font_name: str = "sans-serif",\n    allow_refit: bool = True,\n    image_format: Literal["png", "jpeg"] = "png",\n    jpeg_quality: int = 100,\n    lang: str = "zh",\n    culture: str = "CN",\n    img_fetch_fn: ImgFetchFn = combined_img_fetcher,\n    css_fetch_fn: CSSFetchFn = combined_css_fetcher,\n    urljoin_fn: Callable[[str, str], str] = urllib3.parse.urljoin,\n) -> bytes: ...\n'})}),"\n",(0,s.jsx)(n.p,{children:"\u6700\u6838\u5FC3\u7684\u6E32\u67D3\u51FD\u6570\u3002"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"base_url"})," \u548C ",(0,s.jsx)(n.code,{children:"urljoin_fn"})," \u63A7\u5236\u7740\u4F20\u5165 ",(0,s.jsx)(n.code,{children:"image_fetch_fn"})," \u548C ",(0,s.jsx)(n.code,{children:"css_fetch_fn"})," \u56DE\u8C03\u7684 url \u5185\u5BB9\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"allow_refit"})," \u5982\u679C\u4E3A\u771F\uFF0C\u6E32\u67D3\u65F6\u4F1A\u81EA\u52A8\u7F29\u5C0F\u4EA7\u51FA\u56FE\u7247\u7684\u5BBD\u5EA6\u5230\u6700\u9002\u5408\u7684\u5BBD\u5EA6\uFF0C\u5426\u5219\u5FC5\u5B9A\u4EA7\u51FA ",(0,s.jsx)(n.code,{children:"max_width"})," \u5BBD\u5EA6\u7684\u56FE\u7247\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"max_width"})," \u4E0E ",(0,s.jsx)(n.code,{children:"device_height"})," \u4F1A\u5728 ",(0,s.jsx)(n.code,{children:"@media"})," \u5224\u65AD\u4E2D\u88AB\u4F7F\u7528\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"img_fetch_fn"})," \u9884\u671F\u4E3A\u4E00\u4E2A\u5F02\u6B65\u53EF\u8C03\u7528\u5BF9\u8C61\uFF08\u51FD\u6570\uFF09\uFF0C\u63A5\u6536\u56FE\u7247 url \u5E76\u8FD4\u56DE\u5BF9\u5E94 url \u7684 jpeg \u6216 png \u4E8C\u8FDB\u5236\u6570\u636E\uFF08",(0,s.jsx)(n.code,{children:"bytes"}),"\uFF09\uFF0C\u53EF\u5728\u62D2\u7EDD\u52A0\u8F7D\u65F6\u8FD4\u56DE ",(0,s.jsx)(n.code,{children:"None"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"css_fetch_fn"})," \u9884\u671F\u4E3A\u4E00\u4E2A\u5F02\u6B65\u53EF\u8C03\u7528\u5BF9\u8C61\uFF08\u51FD\u6570\uFF09\uFF0C\u63A5\u6536\u76EE\u6807 CSS url \u5E76\u8FD4\u56DE\u5BF9\u5E94 url \u7684 CSS \u6587\u672C\uFF08",(0,s.jsx)(n.code,{children:"str"}),"\uFF09\uFF0C\u53EF\u5728\u62D2\u7EDD\u52A0\u8F7D\u65F6\u8FD4\u56DE ",(0,s.jsx)(n.code,{children:"None"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["\u4EE5\u4E0B\u4E3A\u8F85\u52A9\u7684\u5C01\u88C5\u51FD\u6570\uFF0C\u5173\u952E\u5B57\u53C2\u6570\u82E5\u672A\u7279\u6B8A\u8BF4\u660E\u5747\u4E0E ",(0,s.jsx)(n.code,{children:"html_to_pic"})," \u542B\u4E49\u76F8\u540C\u3002"]}),"\n",(0,s.jsx)(n.h4,{id:"text_to_pic",children:"text_to_pic"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'async def text_to_pic(\n    text: str,\n    css_path: str = "",\n    *,\n    max_width: int = 500,\n    allow_refit: bool = True,\n    image_format: Literal["png", "jpeg"] = "png",\n    jpeg_quality: int = 100,\n) -> bytes: ...\n'})}),"\n",(0,s.jsx)(n.p,{children:"\u53EF\u7528\u4E8E\u6E32\u67D3\u591A\u884C\u6587\u672C\u3002"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"text"})," \u4F1A\u88AB\u653E\u7F6E\u4E8E ",(0,s.jsx)(n.code,{children:'<div id="main" class="main-box"> <div class="text">'})," \u4E2D\uFF0C\u53EF\u636E\u6B64\u7F16\u5199 CSS \u6765\u6539\u53D8\u6587\u672C\u8868\u73B0\u3002"]}),"\n",(0,s.jsx)(n.h4,{id:"md_to_pic",children:"md_to_pic"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'async def md_to_pic(\n    md: str = "",\n    md_path: str = "",\n    css_path: str = "",\n    *,\n    max_width: int = 500,\n    img_fetch_fn: ImgFetchFn = combined_img_fetcher,\n    allow_refit: bool = True,\n    image_format: Literal["png", "jpeg"] = "png",\n    jpeg_quality: int = 100,\n) -> bytes: ...\n'})}),"\n",(0,s.jsxs)(n.p,{children:["\u53EF\u7528\u4E8E\u6E32\u67D3 Markdown \u6587\u672C\u3002\u9ED8\u8BA4\u4E3A GitHub Markdown Light \u98CE\u683C\uFF0C\u652F\u6301\u57FA\u4E8E ",(0,s.jsx)(n.code,{children:"pygments"})," \u7684\u4EE3\u7801\u9AD8\u4EAE\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"md"})," \u548C ",(0,s.jsx)(n.code,{children:"md_path"})," \u4E8C\u9009\u4E00\uFF0C\u524D\u8005\u8BBE\u7F6E\u65F6\u5E94\u4E3A Markdown \u7684\u6587\u672C\uFF0C\u540E\u8005\u8BBE\u7F6E\u65F6\u5E94\u4E3A\u6307\u5411 Markdown \u6587\u672C\u6587\u4EF6\u7684\u8DEF\u5F84\u3002"]}),"\n",(0,s.jsx)(n.h4,{id:"template_to_pic",children:"template_to_pic"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'async def template_to_pic(\n    template_path: str | PathLike[str] | Sequence[str | PathLike[str]],\n    template_name: str,\n    templates: Mapping[Any, Any],\n    filters: None | Mapping[str, Any] = None,\n    *,\n    max_width: int = 500,\n    device_height: int = 600,\n    base_url: str | None = None,\n    img_fetch_fn: ImgFetchFn = combined_img_fetcher,\n    css_fetch_fn: CSSFetchFn = combined_css_fetcher,\n    allow_refit: bool = True,\n    image_format: Literal["png", "jpeg"] = "png",\n    jpeg_quality: int = 100,\n) -> bytes: ...\n'})}),"\n",(0,s.jsx)(n.p,{children:"\u6E32\u67D3 jinja2 \u6A21\u677F\u3002"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"template_path"})," \u4E3A jinja2 \u73AF\u5883\u7684\u8DEF\u5F84\uFF0C",(0,s.jsx)(n.code,{children:"template_name"})," \u662F\u73AF\u5883\u4E2D\u8981\u52A0\u8F7D\u6A21\u677F\u7684\u540D\u5B57\uFF0C",(0,s.jsx)(n.code,{children:"templates"})," \u4E3A\u4F20\u5165\u6A21\u677F\u7684\u53C2\u6570\uFF0C",(0,s.jsx)(n.code,{children:"filters"})," \u4E3A\u8FC7\u6EE4\u5668\u540D -> \u81EA\u5B9A\u4E49\u8FC7\u6EE4\u5668\u7684\u6620\u5C04\u3002"]}),"\n",(0,s.jsx)(n.h3,{id:"\u63A7\u5236\u5916\u90E8\u8D44\u6E90\u83B7\u53D6",children:"\u63A7\u5236\u5916\u90E8\u8D44\u6E90\u83B7\u53D6"}),"\n",(0,s.jsxs)(n.p,{children:["\u901A\u8FC7\u4F20\u5165 ",(0,s.jsx)(n.code,{children:"img_fetch_fn"})," \u4E0E ",(0,s.jsx)(n.code,{children:"css_fetch_fn"}),"\uFF0C\u6211\u4EEC\u53EF\u4EE5\u5728\u5B9E\u9645\u8BBF\u95EE\u8D44\u6E90\u524D\u8FDB\u884C\u5BA1\u67E5\uFF0C\u4FEE\u6539\u8D44\u6E90\u7684\u6765\u6E90\uFF0C\u6216\u662F\u5BF9 IO \u64CD\u4F5C\u8FDB\u884C\u7F13\u5B58\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"img_fetch_fn"})," \u9884\u671F\u4E3A\u4E00\u4E2A\u5F02\u6B65\u53EF\u8C03\u7528\u5BF9\u8C61\uFF08\u51FD\u6570\uFF09\uFF0C\u63A5\u6536\u56FE\u7247 url \u5E76\u8FD4\u56DE\u5BF9\u5E94 url \u7684 jpeg \u6216 png \u4E8C\u8FDB\u5236\u6570\u636E\uFF08",(0,s.jsx)(n.code,{children:"bytes"}),"\uFF09\uFF0C\u53EF\u5728\u62D2\u7EDD\u52A0\u8F7D\u65F6\u8FD4\u56DE ",(0,s.jsx)(n.code,{children:"None"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"css_fetch_fn"})," \u9884\u671F\u4E3A\u4E00\u4E2A\u5F02\u6B65\u53EF\u8C03\u7528\u5BF9\u8C61\uFF08\u51FD\u6570\uFF09\uFF0C\u63A5\u6536\u76EE\u6807 CSS url \u5E76\u8FD4\u56DE\u5BF9\u5E94 url \u7684 CSS \u6587\u672C\uFF08",(0,s.jsx)(n.code,{children:"str"}),"\uFF09\uFF0C\u53EF\u5728\u62D2\u7EDD\u52A0\u8F7D\u65F6\u8FD4\u56DE ",(0,s.jsx)(n.code,{children:"None"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["\u5982\u679C\u4F60\u60F3\u8981\u7981\u7528\u5916\u90E8\u8D44\u6E90\u52A0\u8F7D/\u53EA\u4ECE\u6587\u4EF6\u7CFB\u7EDF\u52A0\u8F7D/\u53EA\u4ECE\u7F51\u7EDC\u52A0\u8F7D\uFF0C\u53EF\u4EE5\u4F7F\u7528 ",(0,s.jsx)(n.code,{children:"none_fetcher"})," ",(0,s.jsx)(n.code,{children:"filesystem_***_fetcher"})," ",(0,s.jsx)(n.code,{children:"network_***_fetcher"}),"\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:["\u9ED8\u8BA4\u7684 fetcher \u884C\u4E3A\uFF08\u5BF9\u4E8E ",(0,s.jsx)(n.code,{children:"file://"})," \u4ECE\u6587\u4EF6\u7CFB\u7EDF\u52A0\u8F7D\uFF0C\u5176\u4F59\u4ECE\u7F51\u7EDC\u52A0\u8F7D\uFF09\u4F4D\u4E8E ",(0,s.jsx)(n.code,{children:"combined_***_fetcher"}),"\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5BF9\u5176\u5C01\u88C5\u5B9E\u73B0\u7F13\u5B58\u7B49\u64CD\u4F5C\u3002"]}),"\n",(0,s.jsx)(n.h2,{id:"\u914D\u7F6E\u9879",children:"\u914D\u7F6E\u9879"}),"\n",(0,s.jsx)(n.h3,{id:"\u914D\u7F6E-fontconfig",children:"\u914D\u7F6E fontconfig"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"htmlkit"})," \u4F7F\u7528 ",(0,s.jsx)(n.code,{children:"fontconfig"})," \u67E5\u627E\u5B57\u4F53\uFF0C\u8BF7\u53C2\u9605 ",(0,s.jsx)(n.a,{href:"https://fontconfig.pages.freedesktop.org/fontconfig/fontconfig-user",children:(0,s.jsx)(n.code,{children:"fontconfig \u7528\u6237\u624B\u518C"})})," \u4E86\u89E3\u73AF\u5883\u53D8\u91CF\u7684\u5177\u4F53\u542B\u4E49\u3001\u5982\u4F55\u901A\u8FC7\u7F16\u5199\u914D\u7F6E\u6587\u4EF6\u4FEE\u6539\u5B57\u4F53\u9
114D\u7F6E\u7B49\u3002"]}),"\n",(0,s.jsx)(n.h4,{id:"fontconfig_file",children:"fontconfig_file"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u7C7B\u578B"}),": ",(0,s.jsx)(n.code,{children:"str | None"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u9ED8\u8BA4\u503C"}),": ",(0,s.jsx)(n.code,{children:"None"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u8986\u76D6\u9ED8\u8BA4\u7684\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\u3002"}),"\n",(0,s.jsx)(n.h4,{id:"fontconfig_path",children:"fontconfig_path"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u7C7B\u578B"}),": ",(0,s.jsx)(n.code,{children:"str | None"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u9ED8\u8BA4\u503C"}),": ",(0,s.jsx)(n.code,{children:"None"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u8986\u76D6\u9ED8\u8BA4\u7684\u914D\u7F6E\u76EE\u5F55\u3002"}),"\n",(0,s.jsx)(n.h4,{id:"fontconfig_sysroot",children:"fontconfig_sysroot"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u7C7B\u578B"}),": ",(0,s.jsx)(n.code,{children:"str | None"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u9ED8\u8BA4\u503C"}),": ",(0,s.jsx)(n.code,{children:"None"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u8986\u76D6\u9ED8\u8BA4\u7684 sysroot\u3002"}),"\n",(0,s.jsx)(n.h4,{id:"fc_debug",children:"fc_debug"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u7C7B\u578B"}),": ",(0,s.jsx)(n.code,{children:"str | None"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u9ED8\u8BA4\u503C"}),": ",(0,s.jsx)(n.code,{children:"None"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u8BBE\u7F6E Fontconfig \u7684 debug \u7EA7\u522B\u3002"}),"\n",(0,s.jsx)(n.h4,{id:"fc_dbg_match_filter",children:"fc_dbg_match_filter"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u7C7B\u578B"}),": ",(0,s.jsx)(n.code,{children:"str | None"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u9ED8\u8BA4\u503C"}),": ",(0,s.jsx)(n.code,{children:"None"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["\u5F53 ",(0,s.jsx)(n.code,{children:"FC_DEBUG"})," \u8BBE\u7F6E\u4E3A ",(0,s.jsx)(n.code,{children:"MATCH2"})," \u65F6\uFF0C\u8FC7\u6EE4 debug \u8F93\u51FA\u3002"]}),"\n",(0,s.jsx)(n.h4,{id:"fc_lang",children:"fc_lang"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u7C7B\u578B"}),": ",(0,s.jsx)(n.code,{children:"str | None"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u9ED8\u8BA4\u503C"}),": ",(0,s.jsx)(n.code,{children:"None"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["\u8BBE\u7F6E\u9ED8\u8BA4\u8BED\u8A00\uFF0C\u5426\u5219\u4ECE ",(0,s.jsx)(n.code,{children:"LOCALE"})," \u73AF\u5883\u53D8\u91CF\u83B7\u53D6\u3002"]}),"\n",(0,s.jsx)(n.h4,{id:"fontconfig_use_mmap",children:"fontconfig_use_mmap"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u7C7B\u578B"}),": ",(0,s.jsx)(n.code,{children:"str | None"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u9ED8\u8BA4\u503C"}),": ",(0,s.jsx)(n.code,{children:"None"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["\u662F\u5426\u4F7F\u7528 ",(0,s.jsx)(n.code,{children:"mmap(2)"})," \u8BFB\u53D6\u5B57\u4F53\u7F13\u5B58\u3002"]})]})}function x(e={}){let{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},43023(e,n,i){i.d(n,{R:()=>t,x:()=>d});var c=i(63696);let s={}
1,l=c.createContext(s);function t(e){let n=c.useContext(l);return c.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),c.createElement(l.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.