找回密码
 立即注册
楼主: wyzdwdz

assfonts: 字体文件子集化工具,提供嵌入字幕功能(更新v0.7.3)

2

主题

104

回帖

0

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
153751
wyzdwdz  楼主| 发表于 2024-4-17 19:32:12 | 显示全部楼层
本帖最后由 wyzdwdz 于 2024-4-17 20:57 编辑
deadblue 发表于 2024-4-17 13:14
提取了奶茶屋这集内封的字体,之前上传的是坛内调轴的作者上传的字体 ...

这个应该是正确的,这个字体在 Windows 上面显示的是包含 Sitka small 的,但是 Linux 上面识别不出来,所以可能是微软内部的某种实现。我不是字体专家,这个程序的字体匹配为了保证跨平台兼容性全部是自己实现的,但是匹配规则很粗糙,所以错误一定是会有的。目前我也在寻找一个成熟的解决方案,但是还要保证跨平台行为一致性的话确实比较困难。

另外,这个程序最初是用来在 kodi 电视盒子上加载带字体的字幕而开发的,所以会优先考虑 Unix 平台尤其是 Linux 的实现,因此不会使用 Windows 系统自带的 api,仅仅是尽可能做兼容。比如某些字体在 Windows 的播放器上能加载,但是安卓不能,这种字体就不能做子集化,因为如果不修改字体名称的话,放到安卓上面也显示不出来。
回复

使用道具 举报

8

主题

151

回帖

765

VC币

荣誉会员

Rank: 14Rank: 14Rank: 14Rank: 14

积分
104874

崭露头角

sillonae 发表于 2024-5-2 17:18:38 | 显示全部楼层
[INFO] Load fonts database "D:\YANG\桌面\文件清单\fonts.json"
[INFO] Reading input file: "F:\番剧资源\[VCB-Studio] 魔女的使命 [Ma10p_1080p]\[VCB-Studio] Witch Craft Works [01][Ma10p_1080p][x265_flac].ass"
[INFO] Detect input file encoding:  "UTF-8"
[INFO] Found font: "A-OTF Shin Maru Go Pr6N DB" (400,0) --> "F:\字体\Morisawa(森泽)\日文\MorisawaAOTF\日文\丸ゴシック体(圆体)\A-OTF-ShinMGoPr6N-DeBold.otf"[0]
[INFO] Found font: "DFPKinBun-W3" (700,0) --> "F:\字体\DynaFont(华康)\日文\ttf\Std\デザイン書体(创意字体)\DFKinBun-W3 & DFPKinBun-W3 & DFGKinBun-W3.ttc"[1]
[INFO] Found font: "华康金文体W3" (700,0) --> "F:\字体\DynaFont(华康)\简体\ttf\华康金文体W3 & 华康金文体W3(P).ttc"[0]
[INFO] Found font: "方正大标宋_GBK" (700,0) --> "F:\字体\Founder Type(方正)\简繁\ttf\伪GBK\方正大标宋_GBK.ttf"[0]
[INFO] Found font: "方正悠宋 GBK 509R" (400,0) --> "F:\字体\Founder Type(方正)\简繁\ttf\方正悠宋 GBK 509R.ttf"[0]
[INFO] Found font: "方正粗圆_GBK" (400,0) --> "F:\字体\Founder Type(方正)\简繁\ttf\方正粗圆_GBK.ttf"[0]
[INFO] Found font: "方正粗圆_GBK" (700,0) --> "F:\字体\Founder Type(方正)\简繁\ttf\方正粗圆_GBK.ttf"[0]
[INFO] Create subset fonts directory: "F:\番剧资源\[VCB-Studio] 魔女的使命 [Ma10p_1080p]\[VCB-Studio] Witch Craft Works [01][Ma10p_1080p][x265_flac]_subsetted"
[ERROR] Subset failed: "F:\字体\Founder Type(方正)\简繁\ttf\方正悠宋 GBK 509R.ttf"[0]

这个不知道是咋回事,除了方正悠宋 GBK 509R没法子集化之外文件夹内也缺其他字体 Witch Craft Works [VCB-Studio].rar (129.48 KB, 下载次数: 214)
回复

使用道具 举报

17

主题

106

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
9993
QH7B 发表于 2024-5-2 18:06:17 | 显示全部楼层
确实方正悠宋 GBK 509R这个字体,现有的工具都无法子集化。我是用的FontForge重新生成的版本代替。
回复

使用道具 举报

2

主题

25

回帖

10

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
311538

新人登场

vandoge 发表于 2024-5-5 03:38:12 | 显示全部楼层

QQ截图20240505031108.jpg
QQ截图20240505032531.jpg
“HG創英角ポップ体”,对比播放样式来看整个字体似乎都无法子集化

字体为XZ整合包里的,更换过坛里其它字幕作品的同名字体也无法解决
回复

使用道具 举报

2

主题

25

回帖

10

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
311538

新人登场

vandoge 发表于 2024-5-5 03:46:58 | 显示全部楼层
vandoge 发表于 2024-5-5 03:38
“HG創英角ポップ体”,对比播放样式来看整个字体似乎都无法子集化

字体为XZ整合包里的,更换过坛 ...

在AddSubFontMKV的字体黑名单中发现这个字体,不知道是否有关
https://github.com/DYY-Studio/Ad ... list---Decode-Error
回复

使用道具 举报

2

主题

29

回帖

0

VC币

新手上路

Rank: 1

积分
453
jelwell 发表于 2024-5-26 09:56:38 | 显示全部楼层
请问以后会把otf转换ttf的功能集成么?
回复

使用道具 举报

0

主题

3

回帖

0

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
227597
fjkyoo 发表于 2024-5-26 20:06:46 | 显示全部楼层
神器,标记
回复

使用道具 举报

2

主题

104

回帖

0

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
153751
wyzdwdz  楼主| 发表于 2024-5-26 22:10:00 | 显示全部楼层
本帖最后由 wyzdwdz 于 2024-5-26 22:11 编辑
jelwell 发表于 2024-5-26 09:56
请问以后会把otf转换ttf的功能集成么?

这个功能我之前考虑加过,但是目前开源的 otf 转 ttf 库只有 python 的 otf2ttf 这个,但是 python 库不太好嵌入到这个程序里面。

我之后有时间可以考虑自己实现一个 c++ 的转换库,或者不知道有没有大佬能提供一个,或者帮忙推荐一个第三方库


回复

使用道具 举报

2

主题

29

回帖

0

VC币

新手上路

Rank: 1

积分
453
jelwell 发表于 2024-5-27 10:02:53 | 显示全部楼层
wyzdwdz 发表于 2024-5-26 22:10
这个功能我之前考虑加过,但是目前开源的 otf 转 ttf 库只有 python 的 otf2ttf 这个,但是 python 库不太 ...

我也不太懂,203楼提到了FontForge,不知道行不行。
回复

使用道具 举报

2

主题

29

回帖

0

VC币

新手上路

Rank: 1

积分
453
jelwell 发表于 2024-5-27 18:37:15 | 显示全部楼层
wyzdwdz 发表于 2024-5-26 22:10
这个功能我之前考虑加过,但是目前开源的 otf 转 ttf 库只有 python 的 otf2ttf 这个,但是 python 库不太 ...


不知道有没有用
cmd调用python代码

python C:\Software\pyfiles\Myotf2ttf.py otf_dir

python代码

import otf2ttf
import sys
import os

args=[]
otfPath = sys.argv[1]
for root, dirs, files in os.walk(otfPath):
    for file in files:
        # 构建文件的完整路径
        base, ext = os.path.splitext(file)
        if ext == ".otf":
            full_path = os.path.join(root, file)
            args.append(full_path)
otf2ttf.cli.main(args)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表