xref: /aosp_15_r20/external/fonttools/Snippets/merge_woff_metadata.py (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
1*e1fe3e4aSElliott Hughesimport sys
2*e1fe3e4aSElliott Hughesimport os
3*e1fe3e4aSElliott Hughesfrom fontTools.ttx import makeOutputFileName
4*e1fe3e4aSElliott Hughesfrom fontTools.ttLib import TTFont
5*e1fe3e4aSElliott Hughes
6*e1fe3e4aSElliott Hughes
7*e1fe3e4aSElliott Hughesdef main(args=None):
8*e1fe3e4aSElliott Hughes    if args is None:
9*e1fe3e4aSElliott Hughes        args = sys.argv[1:]
10*e1fe3e4aSElliott Hughes
11*e1fe3e4aSElliott Hughes    if len(args) < 2:
12*e1fe3e4aSElliott Hughes        print(
13*e1fe3e4aSElliott Hughes            "usage: merge_woff_metadata.py METADATA.xml " "INPUT.woff [OUTPUT.woff]",
14*e1fe3e4aSElliott Hughes            file=sys.stderr,
15*e1fe3e4aSElliott Hughes        )
16*e1fe3e4aSElliott Hughes        return 1
17*e1fe3e4aSElliott Hughes
18*e1fe3e4aSElliott Hughes    metadata_file = args[0]
19*e1fe3e4aSElliott Hughes    with open(metadata_file, "rb") as f:
20*e1fe3e4aSElliott Hughes        metadata = f.read()
21*e1fe3e4aSElliott Hughes
22*e1fe3e4aSElliott Hughes    infile = args[1]
23*e1fe3e4aSElliott Hughes    if len(args) > 2:
24*e1fe3e4aSElliott Hughes        outfile = args[2]
25*e1fe3e4aSElliott Hughes    else:
26*e1fe3e4aSElliott Hughes        filename, ext = os.path.splitext(infile)
27*e1fe3e4aSElliott Hughes        outfile = makeOutputFileName(filename, None, ext)
28*e1fe3e4aSElliott Hughes
29*e1fe3e4aSElliott Hughes    font = TTFont(infile)
30*e1fe3e4aSElliott Hughes
31*e1fe3e4aSElliott Hughes    if font.flavor not in ("woff", "woff2"):
32*e1fe3e4aSElliott Hughes        print("Input file is not a WOFF or WOFF2 font", file=sys.stderr)
33*e1fe3e4aSElliott Hughes        return 1
34*e1fe3e4aSElliott Hughes
35*e1fe3e4aSElliott Hughes    data = font.flavorData
36*e1fe3e4aSElliott Hughes
37*e1fe3e4aSElliott Hughes    # this sets the new WOFF metadata
38*e1fe3e4aSElliott Hughes    data.metaData = metadata
39*e1fe3e4aSElliott Hughes
40*e1fe3e4aSElliott Hughes    font.save(outfile)
41*e1fe3e4aSElliott Hughes
42*e1fe3e4aSElliott Hughes
43*e1fe3e4aSElliott Hughesif __name__ == "__main__":
44*e1fe3e4aSElliott Hughes    sys.exit(main())
45