anime7pro 发表于 2026-5-18 14:19
再有一个小问题,相对于AssFontSubset或assfonts
ssahdrify-cli生成的嵌入字体子集的ass字幕尺寸有点大
目 ...
应该修好了{:8_729:}
ℹ 正在使用字体缓存(位于 C:\Users\...\AppData\Roaming\ssahdrify\cli_font_cache.sqlite3)。
传 --no-cache 可改为仅使用系统字体。
已写入:...\cat.embed.ass
警告:missing font: Dream Han Serif SC W22
完成:1 个已写入,0 个计划写入,0 个已跳过,0 个失败
初步测试 梦源宋体(ttc)依然无法嵌入
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
set "ssahdrify=...\ssahdrify-cli.exe"
set "src=%~dp0"
set "src=%src:~0, -1%"
set "ass_out=%src%\_ass_out"
set "mkv_out=%src%\_mkv_out"
rem set "fontdir=...\tmpFonts"
if defined fontdir if not fontdir=="" (
if exist "%fontdir%" (
%ssahdrify% refresh-fonts ^
--font-dir "%fontdir%" ^
--font-dir "%windir%\fonts" ^
--font-dir "%localappdata%\Microsoft\Windows\Fonts"
)
)
pushd "%src%"
if exist "%ass_out%" (rd /s /q "%ass_out%")
mkdir "%ass_out%"
if exist "%mkv_out%" (rd /s /q "%mkv_out%")
mkdir "%mkv_out%"
for %%I in (*.mkv *.mp4) do (
if not exist "%%~nI.ass" (
echo missing %%~nI.ass ...
PAUSE
exit
)
%ssahdrify% --fail-fast embed "%%~nI.ass" --on-missing fail --output-dir "%ass_out%"
set "embedass=%ass_out%\%%~nI.embed.ass"
set "outfile=%mkv_out%\%%~nI.mkv"
mkvmerge ^
--title "" ^
--output "!outfile!" ^
--no-global-tags --no-track-tags ^
--no-subtitles --no-attachments ^
"%%I" ^
--language 0:zh --track-name 0:"" ^
--default-track-flag 0:yes --forced-display-flag 0:no ^
"!embedass!"
)
popd
endlocal
anime7pro 发表于 2026-5-26 20:08
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
谢谢反馈,现在应该修复了{:8_739:}
rspOvO 发表于 2026-5-28 15:51
谢谢反馈,现在应该修复了
删除了上一版本的缓存后,重新运行脚本(生成新缓存),依然无法嵌入 Dream Han Serif SC W22
在使用AssFontSubset 或 assfonts 对这个ass字幕的字体子集化时,是可以正常处理 Dream Han Serif SC W22
将字幕中使用的Dream Han Serif SC W22 换成 Microsoft YaHei,即可通过。
又测试了梦源字体的ttf版本,同样无法嵌入,看来是梦源字体对于这个程序而言是特例了,而不是程序不能处理ttc
还有一个问题,如果out-dir设置在ramdisk中,字体子集嵌入的输出会失败,应该是bug回归了
谢谢楼主,加油!
anime7pro 发表于 2026-5-29 12:51
删除了上一版本的缓存后,重新运行脚本(生成新缓存),依然无法嵌入 Dream Han Serif SC W22
在使用AssF ...
拿到了字体文件,我看看到底是怎么一回事,另外方便详细说一下ramdisk的问题吗{:8_739:}
rspOvO 发表于 2026-5-29 22:58
拿到了字体文件,我看看到底是怎么一回事,另外方便详细说一下ramdisk的问题吗
...
经楼主提醒又试了一下
在 win2022 Primo Ramdisk 6.6.0 是可以正常使用的
但在 win10 QSoftRamDisk 5.3.1.9 就会报错
应该是不同的QSoftramdisk软件的兼容性问题
这个问题影响不大
之所以把字幕的临时文件夹放在ramdisk上是因为我使用的脚本中有子集化的ass转sup的操作
会产生很多小图片
改一下脚本也没什么问题
anime7pro 发表于 2026-5-30 10:04
经楼主提醒又试了一下
在 win2022 Primo Ramdisk 6.6.0 是可以正常使用的
但在 win10 QSoftRamDisk 5.3.1 ...
好的好的,之前我本地的字体库里没有梦源黑体,找到了它的仓库在本地验证了一下,这次应该能正常嵌入这个字体了{:8_739:}
v1.5.0-preview.4
测试后可以处理梦源字体了
不过依然是win2022 Primo Ramdisk 6.6.0 成功
win10 QSoftRamDisk 5.3.1.9失败
小问题可以接受
ass中使用的是dream han serif sc w22的ttc
嵌入的字体项为:
fontname: dream_han_serif_sc_w22.ttf
成功!
分别使用3款软件AssFontSubset assfonts ssahdrify
字体子集化处理同一个ass字幕
看一下生成的子集字体与字幕合计的最终大小
合计最小的是AssFontSubset,但字体是独立的,并没有嵌入到ass中
assfonts可以把字体嵌入也可不嵌入,最终合计体积是最大
ssahdrify只能在aas中嵌入字体,文件体积比assfonts小,比assfontsubset大
处理速度上看三者没有明显差异
感觉上ssahdrify有优势,且更大优势是多种功能的链式处理
还有一个最重要的因素是AssFontSubset assfonts基本上停止更新了
而 ssahdrify 正当时
谢谢楼主!加油!!!