找回密码
 立即注册
12
返回列表 发新帖
楼主: YuriLy

FontInAss-浏览器上传无需字体直接子集化

  • TA的每日心情
    慵懒
    2023-7-13 16:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    1

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    171
    jay2023 发表于 2026-3-21 15:08:27 | 显示全部楼层
    刚刚试了一下,报错了:Internal server error
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    26

    回帖

    0

    VC币

    注册会员

    Rank: 2

    积分
    603
    zxj999 发表于 2026-3-21 21:44:28 | 显示全部楼层
    服务器炸了吗 无法使用
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-3 09:12
  • 签到天数: 148 天

    [LV.7]常住居民III

    1

    主题

    6

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    59887
    YuriLy  楼主| 发表于 2026-3-25 15:18:35 | 显示全部楼层
    zxj999 发表于 2026-3-21 21:44
    服务器炸了吗 无法使用

    没用吧,可能你用的时候我刚好在改代码造成的某些冲突,可能
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    26

    回帖

    0

    VC币

    注册会员

    Rank: 2

    积分
    603
    zxj999 发表于 2026-3-25 19:57:36 | 显示全部楼层
    YuriLy 发表于 2026-3-25 15:18
    没用吧,可能你用的时候我刚好在改代码造成的某些冲突,可能

    已经好了哟
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-3 09:12
  • 签到天数: 148 天

    [LV.7]常住居民III

    1

    主题

    6

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    59887
    YuriLy  楼主| 发表于 2026-3-27 09:54:23 | 显示全部楼层
    新增字幕上传分享功能



    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-17 08:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    100

    回帖

    15

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    9440
    領銜の配角 发表于 2026-5-9 11:43:50 | 显示全部楼层
    使用过程中发现有些字体成功子集化,但是用mpv播放时还是会回退为默认字体。

    例如思源黑体,搞了个简单的测试用例,只有一行字幕
    1. [Script Info]
    2. Title: 测试
    3. Synch Point: 0
    4. ScriptType: v4.00+
    5. PlayResX: 960
    6. PlayResY: 720
    7. Timer: 100.0000
    8. YCbCr Matrix: TV.601

    9. [V4+ Styles]
    10. Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    11. Style: CN,思源黑体,56,&H00FFFFFF,&H00000000,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1.5,0.5,2,0,0,15,1

    12. [Events]
    13. Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    14. Dialogue: 0,0:00:00.00,0:01:00.00,CN,,0,0,0,,你好
    复制代码

    子集化之后的结果,看似没什么问题

    1. [Script Info]
    2. Title: 测试
    3. Synch Point: 0
    4. ScriptType: v4.00+
    5. PlayResX: 960
    6. PlayResY: 720
    7. Timer: 100.0000
    8. YCbCr Matrix: TV.601

    9. [V4+ Styles]
    10. Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    11. Style: CN,思源黑体,56,&H00FFFFFF,&H00000000,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1.5,0.5,2,0,0,15,1

    12. [Fonts]
    13. fontname:思源黑体_0.otf
    14. 4V254Q!+!)!!!Q!A1U:'))05$S)!!!P)!!!#PE^4,T+13AS>!!!"%!!!!'"D<7&Q9[R&A!!!#X1!!!!U
    15. ;'6B:#]L`I-!!!#M!!!!.GBI:7%%CA,-!!!!Z!!!!#2I<82Y#\A!!!!!$IA!!!!-<(2B:W79?G]!!![5
    16. !!!!''VB?(!!!V!!!!!"#!!!!!:O97VFT601J!!!!8!!!!I#='^T>!!$!!!!!!OI!!!!)!!"!!!!!1!!
    17. JB!`SF]0005!!Q0I!!!!!/9D869!!!!!ZC.>6A!8`\A$NQ-`!!!!!Q!#!!!!!!!!!!%!!!3)`O!!!!0I
    18. !!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!$!!"1!!!$!!!!!Q04!0I!"1!!!II#7!!!!%M#CA*9!!!"8A!S
    19. !55!!!!!!!!!!!!!!!!Q!!#$+^]]%!!!!"9!!!!!152#4Q!!!#$``Q.Q`YA!!!3)!3"A,A%(!!!!!!)@
    20. !NU!!!!A!!!!!!!@!8I!!!!%!!!!!Q"9"_I!!!!%!!!!"A!U!21!!!!%!!!!%!![!*A!!!!%!!!!%1!/
    21. !0!!!!!%!!%!%!!?!.)!!!!%!!%!%1!/!0!!!1!!!!!!!Q!M#%)!!1!!!!!!"A!;#'Y!!1!!!!!!%!!>
    22. #%E!!1!!!!!!%1!(#'=!!Q!""!E!!!#9!!!!!Q!""!E!!1![!*A!!Q!""!E!!A!/!0!!!Q!""!E!!Q"7
    23. !0Y!!Q!""!E!"!![!*A!!Q!""!E!"1"E!61!!Q!""!E!"A!U!21!!Q!""!E!"Q#7!<A!!Q!""!E!#!!+
    24. !"A!!Q!""!E!#1'5!EY!!Q!""!E!#A%+!_)!!Q!""!E!#Q!U"/Q!!Q!""!E!$1+7"3!!!Q!""!E!$A!U
    25. "\9!!Q!""!E!%!!E!*A!!Q!""!E!%1!5!,Y!!Q!"#!1!!1!?!.)!!Q!"#!1!!A!/!0!!!Q!"#!1!"!!?
    26. !.)!!Q!"#!1!%!!)!.)!!Q!"#!1!%1!5!,Y!K1!A!$)!-!!R!$1!,1!S!$!!-1!Z!#!!11"E!']!9A"F
    27. !#!!+!"I!(1!>!"Q!$I!,Q!P!(=!>Q"X!#Y!91"E!']!9A"F!#Y!9Q"P!'U!,Q!J!#Q!)!"X!'E!>!"I
    28. !#!!5A"F!(-!:1"S!(9!:1"E!#!!2A"P!'Y!>!!A!%Y!91"N!'5!)!!H!&-!<Q"V!()!9Q"F!#=!,A"4
    29. !']!>1"S!'-!:1!A!%A!91"O!#!!5Q"B!'Y!=Q!A!&-!1Q!A!%5!?!"U!()!91"-!'E!:Q"I!(2A(7[1
    30. HN&05Q!A!%5!?!"U!()!91"-!'E!:Q"I!(1!5A"F!'=!>1"M!'%!=A!S!#Y!-!!Q!$%!/Q""!%1!1A"0
    31. !$M!5Q"P!(5!=A"D!'5!3!"B!'Y!5Q"B!'Y!=Q"4!%-!,1"&!(A!>!"S!'%!4!"J!'=!;!"U!$M!11"%
    32. !%]!1A"&!&9!:1"S!(-!;1"P!'Y!)!!S!#Y!-!!Q!$%!/Q"I!']!>!"D!']!<A"W!#!!-1!O!$!!,A!R
    33. !$!!.Q!\!'U!91"L!'5!<Q"U!'9!:1"Y!'5!)!!S!#Y!.1!O!$9!.1!V!$E!-Q"4!']!>1"S!'-!:1!A
    34. !'E!=Q!A!'%!)!"U!()!91"E!'5!<1"B!()!;Q!A!']!:A!A!%%!:!"P!')!:1!A!'E!<A!A!(1!;!"F
    35. !#!!61"O!'E!>!"F!'1!)!"4!(1!91"U!'5!=Q!A!'%!<A"E!#]!<Q"S!#!!<Q"U!'A!:1"S!#!!9Q"P
    36. !(5!<A"U!()!;1"F!(-!,A"3!(E!<Q"L!']!)!"/!%E!5Q")!%E!7A"6!%M!11!AC8^97GW]7V!!)!!I
    37. !'M!91"O!'%!,!!A!')!<Q"Q!']!<1"P!'9!<Q!A!#9!)!"J!'1!:1"P!'=!=A"B!(!!;!"T!#E!/Q!A
    38. !&!!91"V!'Q!)!"%!#Y!)!")!(5!<A"U!#!!+!"-!'%!>!"J!'Y!,!!A!%=!=A"F!'5!;Q!A!#9!)!"$
    39. !(E!=A"J!'Q!<!"J!'-!+1!\!#!!5Q"B!'Y!:!"P!'Q!<!!A!%-!<Q"N!'U!>1"O!'E!9Q"B!(1!;1"P
    40. !'Y!=Q!AQ,#TT-\EO[3SS-]!RX4"7!!M!#!!5Q"P!']!,1"Z!']!>1"O!'=!)!"+!%%!4A"(!#$(J=)9
    41. RA%!)!!G!#!!3A"P!']!,1"Z!'5!<Q"O!#!!3Q""!%Y!2Q!AL"8)`-8Q!#!!+!"I!'%!<A"H!(5!<!!A
    42. !'5!<!"F!'U!:1"O!(1!=Q!M!#!!<!"F!(1!>!"F!()!=Q!A!#9!)!"T!(E!<!"M!'%!9A"M!'5!=Q!J
    43. !%1!=A!O!#!!3Q"F!'Y!)!"-!(5!<A"E!'5!)!!I!(!!=A"P!'I!:1"D!(1!)!"B!()!9Q"I!'E!>!"F
    44. !'-!>!!M!#!!:Q"M!(E!=!"I!#!!=Q"F!(1!)!"E!'5!:A"J!'Y!;1"U!'E!<Q"O!#!!*A!A!']!>A"F
    45. !()!91"M!'Q!)!"Q!()!<Q"E!(5!9Q"U!'E!<Q"O!#E!/Q!A!%U!91"T!'%!>!"B!'M!91!A!%A!11"5
    46. !&1!4Q"3!%E!)'=.E/BL9YSU!#!!+!"Q!()!<Q"E!(5!9Q"U!'E!<Q"O!#!!*A!A!'E!:!"F!']!:Q"S
    47. !'%!=!"I!#!!:1"M!'5!<1"F!'Y!>!"T!#E!;!"U!(1!=!![!#]!,Q"X!(=!>Q!O!'%!:!"P!')!:1!O
    48. !'-!<Q"N!#]!>!"Z!(!!:1!P!&1!;!"J!(-!)!"'!']!<A"U!#!!5Q"P!'9!>!"X!'%!=A"F!#!!;1"T
    49. !#!!<!"J!'-!:1"O!(-!:1"E!#!!>1"O!'1!:1"S!#!!>!"I!'5!)!"4!%E!4!!A!%]!=!"F!'Y!)!"'
    50. !']!<A"U!#!!4!"J!'-!:1"O!(-!:1!M!#!!6A"F!()!=Q"J!']!<A!A!$%!,A!R!#Y!)!"5!'A!;1"T
    51. !#!!2A"P!'Y!>!!A!&-!<Q"G!(1!>Q"B!()!:1!A!'E!=Q!A!'1!;1"T!(1!=A"J!')!>1"U!'5!:!!A
    52. !']!<A!A!'%!<A!A!#)!11"4!#!!31"4!#)!)!"#!%%!5Q"*!&-!,!!A!&=!31"5!%A!4Q"6!&1!)!"8
    53. !%%!5A"3!%%!4A"5!%E!21"4!#!!4Q"3!#!!1Q"0!%Y!2!"*!&1!31"0!%Y!5Q!A!%]!2A!A!%%!4A":
    54. !#!!3Q"*!%Y!2!!M!#!!:1"J!(1!;!"F!()!)!"F!(A!=!"S!'5!=Q"T!#!!<Q"S!#!!;1"N!(!!<!"J
    55. !'5!:!!O!#!!5Q"F!'5!)!"U!'A!:1!A!&-!31"-!#!!4Q"Q!'5!<A!A!%9!<Q"O!(1!)!"-!'E!9Q"F
    56. !'Y!=Q"F!#!!:A"P!()!)!"U!'A!:1!A!(-!=!"F!'-!;1"G!'E!9Q!A!'Q!91"O!'=!>1"B!'=!:1!M
    57. !#!!=!"F!()!<1"J!(-!=Q"J!']!<A"T!#!!91"O!'1!)!"M!'E!<1"J!(1!91"U!'E!<Q"O!(-!)!"H
    58. !']!>A"F!()!<A"J!'Y!:Q!A!(E!<Q"V!()!)!"V!(-!:1!A!']!:A!A!(1!;!"J!(-!)!"'!']!<A"U
    59. !#!!5Q"P!'9!>!"X!'%!=A"F!#Y!;!"U!(1!=!![!#]!,Q"T!'-!=A"J!(!!>!"T!#Y!=Q"J!'Q!,A"P
    60. !()!:Q!P!%]!2A"-!%%!:!"P!')!:1![!#!!5Q"P!(5!=A"D!'5!)!")!'%!<A!A!&-!91"O!(-!)!"4
    61. !%-!)!"&!(A!>!"S!'%!4!"J!'=!;!"U!#!!5A"F!'=!>1"M!'%!=E&E<W*F/C"4<X6S9W5A3'&O)&.B
    62. <H-A5U-A28BU=G&-;7>I>#"3:7>V<'&S5W^V=G.F3'&O5W&O=V.$,56Y>(*B4'FH;(1!!!!!!!%!!Q!"
    63. !!!!$!!%!#A!!!!'!!1!!1!#4W":@@``!!"09&F^``_QI;;&!!%!!!!!!!!!!Q!!!!!!!!!!!!!!!!!!
    64. !!!!!!!!!!!!!!!!!!!!!!%!"!%!!1%"'V.P>8*D:5BB<F.B<H.41SV&?(2S95RJ:WBU!!%"!3DY'Q$Y
    65. (!,Y(10Y(A3,1RQ%C0J]"2U!!!$G$RU!!!$L%9M>!!!#PB)!"A%"-VBV@)3-6G6S=WFP<C!S,D!Q-4NI
    66. <X2D<WZW)$%O-#YR-$=\<7&L:7^U:G6Y:3!S,D5O.D5V/4.4<X6S9W5A3'&O)&.B<H-A5U-A28BU=G&-
    67. ;7>I>#"3:7>V<'&S5W^V=G.F)%BB<C"497ZT)&.$)%6Y>(*B4'FH;(23:7>V<'&S9WFE-$EZ/$>D;71R
    68. .$)S.1!!!!',!9Q!!Q)!!1!%!.A"S@J]$PJ]^\@ZTR6/_T9H_T%A*!C3BJ:_DY5)OLOZR<8+#)P]`Q7I
    69. CQ7,_3Y&N>#RV[L9#+<^B"8.Y=0X%[\X'QBME16L_R27_R&(/!DYZ0C3&8^3@EG"9ACEB179OJX=G=Q)
    70. ?:-&B)E&`'C,";(*HMS;TQBNE16K_S^6_SN#*QC3BZC#E)=)M-#NT;<6#0>5CQ7,`0]&CX[(BX[,#([+
    71. 8YJ7D1C1A9^`DI))S)OQCZ_2#*W2EZ7,JAC,_0Y&^Q,\2B8)_Q$%_S3A,1CHF!6Y[6$X)UTX!1A/_HTY
    72. #PDB&8L\/'<\&F5G#&[O7+Z:K!CCW[@WIP="#0>6KB7'C18\3IM&G^79V:4+#'[."9*-@E"]1!D\$YM&
    73. CWY&^QG,"8(\#7\"H%^#-.LR70!91B2*U&'.W%)EI76A9_$#/'ZV]`%]!C]9\2DJ7I)I[)&<[^@N&?U
    74. #-8X!L,X**XX4ADYN0NR&@O(CQ7,^QY&TM(=X\X9#(/<"97)"@QECQ7,<A8Y$IM&8EJ%1F"=#)P\(!8\
    75. E9M&CWY&^Z',"9P]&Q7,@9;'?YI)@)J9CU;-#*##EI#/AQD9CL/-I:!)I:'5FIOG#)PY&A8XBYM&$A!!
    76. !_A!!!0I!!!$[!!!!!!!!1!!!!!!!!!#!"1!!A!7!!*F<HJI

    77. [Events]
    78. Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    79. Dialogue: 0,0:00:00.00,0:01:00.00,CN,,0,0,0,,你好
    复制代码


    我的mpv的--sub-font设置的是微软雅黑,加载字幕后控制台会显示 思源黑体回退为微软雅黑了
    2026-05-09 113342.jpg


    思源系列的字体好像都有问题,思源宋体的测试结果也是一样的,
    换成其他字体则没啥问题,例如"方正韵动中黑_GBK"

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2026-3-16 19:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    45

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    76365
    蒙太奇字幕组 发表于 2026-5-11 23:14:58 | 显示全部楼层
    領銜の配角 发表于 2026-5-9 11:43
    使用过程中发现有些字体成功子集化,但是用mpv播放时还是会回退为默认字体。

    例如思源黑体,搞了个简单的 ...

    我简单帮助分析下这个问题

    首先用字幕内嵌字体提取工具提取出该字体:
    https://github.com/MontageSubs/ass-tools#ass-font-extractorpy

    提取出来的字体在任何字体软件都无法打开,确认字体已损坏。

    接着用字体表分析工具检查了一下字体结构:
    https://github.com/MontageSubs/a ... t_name_inspector.py (需要 fonttools)

    得到结果如下:
    1. python font_name_inspector.py '思源黑体_0.otf'
    2. Font Name Inspector v1.2
    3. ====================================================================================================
    4. Font file: 思源黑体_0.otf
    5. Type: TTF
    6. Total tables: 11
    7. Tables:
    8.   CFF
    9.   GlyphOrder
    10.   OS/2
    11.   cmap
    12.   head
    13.   hhea
    14.   hmtx
    15.   ltag
    16.   maxp
    17.   name
    18.   post


    19. name table (31 entries)

    20. NameID | Platform    | Encoding | Language                     | Value
    21. ----------------------------------------------------------------------------------------------------
    22. 0      | 3 (Windows) | 1        | 0x409 (English (US))         | © 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.
    23. ----------------------------------------------------------------------------------------------------
    24. 1      | 3 (Windows) | 1        | 0x409 (English (US))         | Source Han Sans SC ExtraLight
    25. 1      | 3 (Windows) | 1        | 0x804 (Chinese (Simplified)) | 思源黑体 ExtraLight
    26. ----------------------------------------------------------------------------------------------------
    27. 2      | 3 (Windows) | 1        | 0x409 (English (US))         | Regular
    28. 2      | 3 (Windows) | 1        | 0x804 (Chinese (Simplified)) | Regular
    29. ----------------------------------------------------------------------------------------------------
    30. 3      | 0 (Unicode) | 4        | 0x0 (Neutral)                | Adobe: Source Han Sans SC ExtraLight Regular
    31. 3      | 1 (macOS)   | 0        | 0x0 (Neutral)                | Adobe: Source Han Sans SC ExtraLight Regular
    32. 3      | 3 (Windows) | 1        | 0x409 (English (US))         | 2.001;ADBO;SourceHanSansSC-ExtraLight;ADOBE
    33. ----------------------------------------------------------------------------------------------------
    34. 4      | 3 (Windows) | 1        | 0x409 (English (US))         | Source Han Sans SC ExtraLight
    35. 4      | 3 (Windows) | 1        | 0x804 (Chinese (Simplified)) | 思源黑体 ExtraLight
    36. ----------------------------------------------------------------------------------------------------
    37. 5      | 3 (Windows) | 1        | 0x409 (English (US))         | Version 2.001;hotconv 1.0.107;makeotfexe 2.5.65593
    38. ----------------------------------------------------------------------------------------------------
    39. 6      | 0 (Unicode) | 4        | 0x0 (Neutral)                | SourceHanSansSC-ExtraLight
    40. 6      | 1 (macOS)   | 0        | 0x0 (Neutral)                | SourceHanSansSC-ExtraLight
    41. 6      | 3 (Windows) | 1        | 0x409 (English (US))         | SourceHanSansSC-ExtraLight
    42. ----------------------------------------------------------------------------------------------------
    43. 7      | 3 (Windows) | 1        | 0x409 (English (US))         | Source is a trademark of Adobe in the United States and/or other countries.
    44. ----------------------------------------------------------------------------------------------------
    45. 8      | 3 (Windows) | 1        | 0x409 (English (US))         | Adobe
    46. ----------------------------------------------------------------------------------------------------
    47. 9      | 3 (Windows) | 1        | 0x409 (English (US))         | Ryoko NISHIZUKA 西塚涼子 (kana, bopomofo & ideographs); Paul D. Hunt (Latin, Greek & Cyrillic); Sandoll Communications 산돌커뮤니케이션, Soo-young JANG 장수영 & Joo-yeon KANG 강주연 (hangul elements, letters & syllables)
    48. ----------------------------------------------------------------------------------------------------
    49. 10     | 3 (Windows) | 1        | 0x409 (English (US))         | Dr. Ken Lunde (project architect, glyph set definition & overall production); Masataka HATTORI 服部正貴 (production & ideograph elements)
    50. ----------------------------------------------------------------------------------------------------
    51. 11     | 3 (Windows) | 1        | 0x409 (English (US))         | http://www.adobe.com/type/
    52. ----------------------------------------------------------------------------------------------------
    53. 13     | 3 (Windows) | 1        | 0x409 (English (US))         | This Font Software is licensed under the SIL Open Font License, Version 1.1. This Font Software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software.
    54. ----------------------------------------------------------------------------------------------------
    55. 14     | 3 (Windows) | 1        | 0x409 (English (US))         | http://scripts.sil.org/OFL
    56. ----------------------------------------------------------------------------------------------------
    57. 16     | 0 (Unicode) | 4        | 0x0 (Neutral)                | Source Han Sans SC ExtraLight
    58. 16     | 0 (Unicode) | 4        | 0x1 (Unknown)                | 思源黑体 ExtraLight
    59. 16     | 1 (macOS)   | 0        | 0x0 (Neutral)                | Source Han Sans SC ExtraLight
    60. 16     | 3 (Windows) | 1        | 0x409 (English (US))         | Source Han Sans SC
    61. 16     | 3 (Windows) | 1        | 0x804 (Chinese (Simplified)) | 思源黑体
    62. ----------------------------------------------------------------------------------------------------
    63. 17     | 0 (Unicode) | 4        | 0x0 (Neutral)                | Regular
    64. 17     | 0 (Unicode) | 4        | 0x1 (Unknown)                | Regular
    65. 17     | 1 (macOS)   | 0        | 0x0 (Neutral)                | Regular
    66. 17     | 3 (Windows) | 1        | 0x409 (English (US))         | ExtraLight
    67. 17     | 3 (Windows) | 1        | 0x804 (Chinese (Simplified)) | ExtraLight
    复制代码


    name table 看起来没有问题,是标准的思源黑体 ExtraLight。但进一步查看 CFF 和 hmtx 表才发现了关键问题。

    用 ttx (需要 fonttools)导出 CFF 和 hmtx 表后,我发现了两个严重错误:

    1. # ttx -t CFF -t hmtx -o - '思源黑体_0.otf'

    2. Dumping "思源黑体_0.otf" to "<stdout>"...
    3. <?xml version="1.0" encoding="UTF-8"?>
    4. <ttFont sfntVersion="OTTO" ttLibVersion="4.60">

    5. Dumping 'CFF ' table...
    6.   <CFF>
    7.     <major value="1"/>
    8.     <minor value="0"/>
    9.     <CFFFont name="SourceHanSansSC-ExtraLight">
    10.       <version value="Version 2.001;hotconv 1.0.107;makeotfexe 2.5.65593"/>
    11.       <FullName value="Source Han Sans SC ExtraLight Regular"/>
    12.       <FamilyName value="Source Han Sans SC ExtraLight"/>
    13.       <Weight value="Regular"/>
    14.       <isFixedPitch value="0"/>
    15.       <ItalicAngle value="0"/>
    16.       <UnderlinePosition value="-100"/>
    17.       <UnderlineThickness value="50"/>
    18.       <PaintType value="0"/>
    19.       <CharstringType value="2"/>
    20.       <FontMatrix value="0.001 0 0 0.001 0 0"/>
    21.       <FontBBox value="0 -72 1160 1000"/>
    22.       <StrokeWidth value="0"/>
    23.       <!-- charset is dumped separately as the 'GlyphOrder' element -->
    24.       <Encoding name="StandardEncoding"/>
    25.       <Private>
    26.         <BlueScale value="0.039625"/>
    27.         <BlueShift value="7"/>
    28.         <BlueFuzz value="1"/>
    29.         <ForceBold value="0"/>
    30.         <LanguageGroup value="0"/>
    31.         <ExpansionFactor value="0.06"/>
    32.         <initialRandomSeed value="0"/>
    33.         <defaultWidthX value="0"/>
    34.         <nominalWidthX value="0"/>
    35.       </Private>
    36.       <CharStrings>
    37.         <CharString name=".notdef">
    38.           1000 endchar
    39.         </CharString>
    40.         <CharString name="cid09987">
    41.           1000 291 827 rmoveto
    42.           -61 -162 -100 -157 -107 -103 rrcurveto
    43.           7 -5 11 -13 4 -6 rrcurveto
    44.           47 48 46 58 42 63 rrcurveto
    45.           0 -619 rlineto
    46.           29 0 rlineto
    47.           0 666 rlineto
    48.           42 69 38 76 31 77 rrcurveto
    49.           27 -752 rmoveto
    50.           66 86 56 127 35 135 rrcurveto
    51.           -31 6 rlineto
    52.           -32 -128 -53 -125 -68 -83 rrcurveto
    53.           592 510 rmoveto
    54.           -12 -57 -13 -66 -10 -41 rrcurveto
    55.           25 -6 rlineto
    56.           13 47 18 81 14 65 rrcurveto
    57.           -18 8 rlineto
    58.           -7 -2 rlineto
    59.           -468 0 rlineto
    60.           22 62 19 65 15 68 rrcurveto
    61.           -30 6 rlineto
    62.           -33 -155 -54 -151 -73 -100 rrcurveto
    63.           7 -4 13 -9 5 -4 rrcurveto
    64.           37 53 34 66 27 74 rrcurveto
    65.           192 0 rlineto
    66.           0 -619 rlineto
    67.           0 -13 -4 -4 -13 0 rrcurveto
    68.           -13 -1 -44 -1 -53 2 rrcurveto
    69.           5 -10 4 -12 3 -9 rrcurveto
    70.           61 0 37 0 20 6 rrcurveto
    71.           18 6 8 10 0 27 rrcurveto
    72.           0 618 rlineto
    73.           110 -178 rmoveto
    74.           61 -108 57 -144 21 -94 rrcurveto
    75.           28 9 rlineto
    76.           -19 94 -59 143 -63 109 rrcurveto
    77.           endchar
    78.         </CharString>
    79.         <CharString name="cid14225">
    80.           1000 374 589 rmoveto
    81.           -17 -164 -37 -130 -54 -101 rrcurveto
    82.           -45 35 -51 35 -50 29 rrcurveto
    83.           23 80 28 107 23 109 rrcurveto
    84.           193 31 rmoveto
    85.           -5 -2 rlineto
    86.           -182 0 rlineto
    87.           16 74 13 74 9 63 rrcurveto
    88.           -29 2 rlineto
    89.           -9 -63 -13 -75 -15 -75 rrcurveto
    90.           -123 0 rlineto
    91.           0 -29 rlineto
    92.           117 0 rlineto
    93.           -26 -117 -29 54 17 -60 -73 -91 79 102 -51 101 rcurveline
    94.           -73 cntrmask
    95.           -66 69 -58 2 77 -73 -103 22 -38 -43 -40 85 55 -83 -29 -22 104 102 -79</CharString>
    96.       </CharStrings>
    97.     </CFFFont>

    98.     <GlobalSubrs>
    99.       <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
    100.     </GlobalSubrs>
    101.   </CFF>

    102. WARNING: Glyph '.notdef' has a huge advance width (64000); is it intentional or an (invalid) negative value?
    103. WARNING: Glyph 'cid09987' has a huge advance width (64000); is it intentional or an (invalid) negative value?
    104. WARNING: Glyph 'cid14225' has a huge advance width (64000); is it intentional or an (invalid) negative value?
    105. Dumping 'hmtx' table...
    106.   <hmtx>
    107.     <mtx name=".notdef" width="64000" lsb="0"/>
    108.     <mtx name="cid09987" width="64000" lsb="0"/>
    109.     <mtx name="cid14225" width="64000" lsb="0"/>
    110.   </hmtx>

    111. </ttFont>

    复制代码


    第一,字体中所有字形的字宽都是 64000,这是错误的。正常字宽应该在 1000 左右,64000 这样的数值会报错。

    第二,CharString 中的 cid14225 在结尾缺少 endchar 指令,被不正确切断了。这可能才是最关键的问题,直接导致字体数据损坏和无法打开。

    总结:字体损坏可能在字宽和子集化时没有完整复制原始字体内容,最关键的是异常截断,这导致字体不完整。



    回复

    使用道具 举报

    12
    返回列表 发新帖
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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