When adding a picture in FieldWorks 9.3.8.1416, the copyright and license metadata is saved to the PNG file in multiple formats: an XML chunk in XMP format, correctly saved in an iTXt chunk, and two tEXt chunks tagged as "Copyright" and "Author". The two tEXt chunks are written in UTF-8, even though the PNG spec says that tEXt chunks should be encoded in ISO-8859-1. This results in the copyright statement looking like this when I run exiftool test-image.png:
License : http://creativecommons.org/licenses/by-sa/4.0/
Rights : Copyright © 2026, Robin Munn
Creator : Robin Munn
Copyright : Copyright © 2026, Robin Munn
Author : Robin Munn
Notice the "Copyright © 2026, Robin Munn" line, because the © character (U+00A9) is 0xC2 0xA9 in UTF-8. In ISO-8859-1, 0xC2 is  while 0xA9 is ©.
This might not actually be a bug in SIL.Core.ClearShare; it might be a TagLib bug, where TagLib always writes UTF-8 no matter what the spec says it should write. And there's a comment in
|
//NB: we're losing non-ascii somewhere... the copyright symbol is just the most obvious |
|
if (!IsNullOrEmpty(CopyrightNotice)) |
|
{ |
|
CopyrightNotice = CopyrightNotice.Replace("Copyright �", "Copyright ©"); |
|
} |
which suggests that this, or something like this, has been a known problem for a while: that comment is from 2012-07-05 in commit
234f379.
It's also possible that this not-following-the-spec behavior is something we'll just have to live with, because what if the file's author was named Пётр Ильич Чайковский? (Better known in English as Pyotr Ilyich Tchaikovsky). It's not always possible to write the copyright statement in Latin-1, which is something that the PNG spec authors didn't consider. If we make the author "Пётр Ильич Чайковский (Pyotr Ilyich Tchaikovsky)" and make the copyright holder the same string, then this is how it comes out in exiftool:
License : http://creativecommons.org/licenses/by-sa/4.0/
Rights : Copyright © 2026, Пётр Ильич Чайковский (Pyotr Ilyich Tchaikovsky)
Creator : Пётр Ильич Чайковский (Pyotr Ilyich Tchaikovsky)
Copyright : Copyright © 2026, Пётр Ильич Чайков�кий (Pyotr Ilyich Tchaikovsky)
Author : Пётр Ильич Чайков�кий (Pyotr Ilyich Tchaikovsky)
At least exiftool prints "Rights" and "Creator" (extracted from the UTF-8 encoded XMP in the iTXt chunk) correctly, meaning that the completely-garbled text of the "Copyright" and "Author" lines is not the only source of copyright metadata available. And even the garbled text (which is UTF-8 being read as ISO-8859-1) can be unmangled, by someone who knows what he's doing, to correctly produce the original name.
But whether or not this is a bug in SIL.Core.ClearShare, or something we can't solve but will just have to live with because we want to be able to correctly credit authors whose names are written in non-Latin alphabets, I wanted to at least record my findings so that we'll know why the copyright statement is showing up with © instead of the correct © in PNG files.
When adding a picture in FieldWorks 9.3.8.1416, the copyright and license metadata is saved to the PNG file in multiple formats: an XML chunk in XMP format, correctly saved in an
iTXtchunk, and twotEXtchunks tagged as "Copyright" and "Author". The twotEXtchunks are written in UTF-8, even though the PNG spec says thattEXtchunks should be encoded in ISO-8859-1. This results in the copyright statement looking like this when I runexiftool test-image.png:Notice the "Copyright © 2026, Robin Munn" line, because the © character (U+00A9) is 0xC2 0xA9 in UTF-8. In ISO-8859-1, 0xC2 is  while 0xA9 is ©.
This might not actually be a bug in SIL.Core.ClearShare; it might be a TagLib bug, where TagLib always writes UTF-8 no matter what the spec says it should write. And there's a comment in
libpalaso/SIL.Core/ClearShare/MetadataCore.cs
Lines 197 to 201 in fd1cf9c
It's also possible that this not-following-the-spec behavior is something we'll just have to live with, because what if the file's author was named Пётр Ильич Чайковский? (Better known in English as Pyotr Ilyich Tchaikovsky). It's not always possible to write the copyright statement in Latin-1, which is something that the PNG spec authors didn't consider. If we make the author "Пётр Ильич Чайковский (Pyotr Ilyich Tchaikovsky)" and make the copyright holder the same string, then this is how it comes out in exiftool:
At least exiftool prints "Rights" and "Creator" (extracted from the UTF-8 encoded XMP in the
iTXtchunk) correctly, meaning that the completely-garbled text of the "Copyright" and "Author" lines is not the only source of copyright metadata available. And even the garbled text (which is UTF-8 being read as ISO-8859-1) can be unmangled, by someone who knows what he's doing, to correctly produce the original name.But whether or not this is a bug in SIL.Core.ClearShare, or something we can't solve but will just have to live with because we want to be able to correctly credit authors whose names are written in non-Latin alphabets, I wanted to at least record my findings so that we'll know why the copyright statement is showing up with © instead of the correct © in PNG files.