Watermarking Fonts - Which Metadata Table is Best?

If I wanted to embed a static watermark in my fonts (mostly to determine the distribution source) what would be the best metadata table to use in the font file to store this information?

I'm not looking for other methods of watermarking, I'm mostly looking at the least used metadata tables that just aren't frequently used or used at all.

Or, is a better approach just to create a new metadata table entry just for this and if so, what number would that start at?

Thanks in advance,
Stuart

Comments

  • You can create your own table using fonttools with any information you need.
  • Maybe a distributor-specific string added to one of the name tables (7-14?) could also work, but is a little more obvious.
  • Hrant Հրանդ Փափազեան Papazian
    edited October 2020
    I [would] embed the mark into the font contours themselves (which can actually be done without affecting the contour rendering). Tables are obvious and can be stripped out, but virtually nobody who's unscrupulous will bother discovering your little telltale data...
  • Ray Larabie
    Ray Larabie Posts: 1,436
    Add an unencoded empty glyph with the code in the glyph name.
  • I was going through my font library the other day to test a validation tool I'm working on, and found that it failed on this one:
    simon@Simons-iMac ~/Library/Fonts x*$ ttx -l SyrCOMTalada.ttf
    Listing table info for "SyrCOMTalada.ttf":
        tag     checksum    length    offset
        ----  ----------  --------  --------
        GDEF  0x00000000       114     92024
        GPOS  0x00000000      7382     95112
        GSUB  0x00000000       578     90704
        OS/2  0xB1108074        86       348
        TSI©  0xCA34B56D        33       436
    

    Hmm, OK, checksums for GDEF, GPOS, GSUB are wr... what the heck is that?

    simon@Simons-iMac ~/Library/Fonts x*$ otfsurgeon -i SyrCOMTalada.ttf dump 'TSI©'
    � 1989-1994, Type Solutions, Inc.%
    
  • To be sure, I'd only like to do this using name tables, I was mostly curious which ones are least used name tables that may make a good spot to add some sort of quid.
  • Add an unencoded empty glyph with the code in the glyph name.
    OK but too obvious.  :-)
  • Vendors are free to use name IDs 256 - 32767 in the 'name' table for any purpose.

    https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids

  • Sorry for the slight offtopic—I am interested to know more about the actual use case of this watermark :)@Stuart Sandler You said "mostly to determine the distribution source".

    But how the whole situation goes, i.e. you spot your font on a pirate site and would like to check where it is bought...or something else?
  • Something else Igor, just looking for areas of the font that I can store data that won't generally be seen or seen obviously.
  • Hrant Հրանդ Փափազեան Papazian
    edited November 2020
    @Igor Petrovic I think it can be useful to be able to trace who gave it to them...

    @Stuart Sandler What better place than the outlines themselves? :-)  Virtually undetectable, too much trouble to remove.
  • @Hrant H. Papazian I totally agree but am looking for something more automated which is why the metadata felt like an easy win
  • @Stuart Sandler Ah, makes sense. I wonder if there could be a plug-in that takes a straight line in some glyph and adds inward handles that encode the data.
  • One more consideration that applies to anywhere you end up adding your metadata. Add it in an encrypted form. That way some gibberish somewhere in the font won't be as easily detected as watermark and removed, as opposed to someone seeing a more obvious plaintext watermark.

    Also note that some webfonts have their name tables wiped, for the most part, so your watermark might get dropped in the process.

    I wonder if someone here has experience with DSIG certificates? Could that be used to sign the fonts with a different certificate for each distributors? Then again, DSIG tables can be dropped, too, without impact to the font's functionality.
  • Viktor Rubenko
    Viktor Rubenko Posts: 119
    edited November 2020
    Encrypt morse code into a glyph outline using curve / non-curve points sequence.
  • @Stuart Sandler Ah, makes sense. I wonder if there could be a plug-in that takes a straight line in some glyph and adds inward handles that encode the data.
    Thing is, if you release this plug-in to the public, people can see how it works and write a little scrubber tool that removes data encoded in that particular way 🙀 
  • Hrant Հրանդ Փափազեան Papazian
    edited November 2020
    Also note that some webfonts have their name tables wiped, for the most part, so your watermark might get dropped in the process.
    Bingo...
    Roel Nieskens
    Thing is, if you release this plug-in to the public, people can see how it works and write a little scrubber tool that removes data encoded in that particular way
    True...
    But they won't know which glyph you chose... For extra protection, you could encode the values in actual curves (although that slightly compromises the design) so there's zero visual indication of the watermark. So for example the plug-in could take a tangent point and slightly move the node back/forth and its handle forth/back (keeping the curve practically identical).