Add AC/BC RTCP programs and 3D machine manager

This commit is contained in:
2026-09-20 12:31:12 +08:00
parent 1c1e5f9672
commit 8aab531b02
363 changed files with 53213 additions and 58 deletions

View File

@@ -0,0 +1,28 @@
"""Embed only the authored Unicode codepoints, avoiding CJK radical aliases."""
import html
import shutil
from pathlib import Path
from fontTools import subset
from fontTools.ttLib import TTFont
ROOT=Path(__file__).resolve().parents[1]
OUT=ROOT/'docs/teaching/rtcp-beginners'
characters=set(html.unescape((OUT/'handbook.html').read_text()))
for style in ['Regular','Bold']:
font=TTFont(f'/usr/share/fonts/opentype/noto/NotoSansCJK-{style}.ttc',fontNumber=2)
options=subset.Options()
options.name_IDs=['*'];options.name_legacy=True;options.name_languages=['*']
tool=subset.Subsetter(options=options);tool.populate(unicodes={ord(c) for c in characters});tool.subset(font)
for record in font['name'].names:
replacement={1:'RtcpHandbookCJK',2:style,3:f'RtcpHandbookCJK-{style}',4:f'RtcpHandbookCJK {style}',6:f'RtcpHandbookCJK-{style}'}.get(record.nameID)
if replacement:
record.string=replacement.encode(record.getEncoding())
if 'CFF ' in font:
cff=font['CFF '].cff
cff.fontNames=[f'RtcpHandbookCJK-{style}']
cff.topDictIndex[0].FamilyName='RtcpHandbookCJK'
cff.topDictIndex[0].FullName=f'RtcpHandbookCJK {style}'
font.save(OUT/f'assets/handbook-{style.lower()}.otf')
font.close()
shutil.copyfile('/usr/share/doc/fonts-noto-cjk/copyright',OUT/'assets/font-license.txt')
print('Embedded SC fonts subset to',len(characters),'authored characters')